im Unterricht müssen wir derzeit ein Programm schreiben, bei dem es darum geht eine Prüfstatistik zu erstellen (Min. / Max. / Durchschnitt). Das hat eigentlich auch gut funktioniert. Nun sollen wir das Programm aber so erweitern, dass die Zahlen sortiert ausgegeben werden (mit dem Bubblesort-Algorithums als Funktion). Ich habe bereits damit angefanen. Allerdings komme ich nicht weiter, da ich nicht weiß, wie ich einen Array aus einer Funktion zurück geben soll.
Hier mal mein Code:
Code:
> #include "stdafx.h"
> #include <iostream>
> #include <iomanip>
> #define Zahl 30
>
> using namespace std;
>
> // Name der Funktion
> double Durchschnitt(int Punktzahl[], int Teilnehmerzahl);
> int MIN(int Punktwerte[], int Anzahl_Teilnehmer);
> int MAX(int Erreichte_Punkte[], int Prüflinge);
> int sort(int P[], int T);
>
> int _tmain(int argc, _TCHAR* argv[])
> {
>
> // Deklaration der Variablen
> int i;
> int Teilnehmer = 0;
> int Punkte[Zahl];
> int a = 1;
>
>
> // Zahl soll mit 2 Nachkommastelle ausgegeben werden
> cout << fixed << setprecision(2) << endl;
>
>
> //Ausgabe Überschrift
> cout << "PRUEF-STATISTIK" << endl;
> cout << endl << endl;
>
>
> // for-Schleife
> for (i = 0; i < Zahl; i++)
> {
>
> // Eingabeaufforderung - Eingabe
> cout << "Bitte geben Sie Ihre Punktzahl ein (Abbruchbedingung
> Eingabe = -1): ";
> cin >> Punkte[i];
>
>
> // if-Verzweigung
> if (Punkte[i] == -1)
> {
> break;
> }
>
> else
> {
> Teilnehmer += 1;
> }
>
> }
>
> cout << endl << endl;
>
>
> // for-Schleife
> for (i = 0; i < Teilnehmer; i++)
> {
> // Ausgabe
> cout << Punkte[i] << endl;
> }
>
>
>
> cout << endl << endl;
>
>
>
> // for-Schleife
> for (i = 0; i < Teilnehmer; i++)
> {
> // Ausgabe
> cout << sort(Punkte, Teilnehmer) << endl;
> }
>
>
> // Ausgaben
> cout << endl << endl; // Aufruf der Funktion mit
> Übergabeparametern
> cout << "Der Durchschnitt betraegt: " << Durchschnitt(Punkte,
> Teilnehmer) << endl;
>
> cout << endl << endl; // Aufruf der Funktion mit
> Übergabeparametern
> cout << "Die kleinste erreichte Punktzahl betraegt: " <<
> MIN(Punkte, Teilnehmer) << endl;
> // Aufruf der Funktion mit Übergabeparametern
> cout << "Die groesste erreichte Punktzahl betraegt: " <<
> MAX(Punkte, Teilnehmer) << endl;
>
> cout << endl << endl;
> system("pause");
> return 0;
> }
>
>
> // Funktion
> double Durchschnitt(int Punktzahl[], int Teilnehmerzahl)
> {
> double ergebnis = 0;
> int b;
> for (b = 0; b < Teilnehmerzahl; b++)
> {
> ergebnis += Punktzahl[b];
> }
>
> // Rückgabewert
> return ergebnis / Teilnehmerzahl;
>
> }
>
>
> // Funktion
> int MIN(int Punktwerte[], int Anzahl_Teilnehmer)
> {
> int min;
> int c;
> min = Punktwerte[0];
>
> for (c = 0; c < Anzahl_Teilnehmer; c++)
> {
> if (Punktwerte[c] < min)
> {
> min = Punktwerte[c];
> }
> }
>
> // Rückgabewert
> return min;
> }
>
>
> // Funktion
> int MAX(int Erreichte_Punkte[], int Prüflinge)
> {
> int max;
> int d;
> max = Erreichte_Punkte[0];
>
> for (d = 0; d < Prüflinge; d++)
> {
>
> if (Erreichte_Punkte[d] > max)
> {
> max = Erreichte_Punkte[d];
> }
> }
>
> // Rückgabewert
> return max;
> }
>
> int sort(int P[], int T)
> {
> int Hilfsfeld;
> int i;
> int j;
>
> for (j = 0; j < (T - 1) ; i++)
> {
> for (i = 0; i < (T - 2); i++)
> {
> if (P[i] > P[i + 1])
> {
> Hilfsfeld = P[i];
> P[i] = P[i + 1];
> P[i + 1] = Hilfsfeld;
>
> }
>
> return P;
> }
>
>
> }
>
>
>
> }
Um nicht gleich einen weiteren Thread aufzumachen brauche ich noch bei einer anderen Sache Hilfe.
Dabei geht es darum, dass eine Tabelle mit Zufallszahlen (1-10) erstellt werden soll, welche ich auch bereits erstellt habe. Nun soll die Anzahl der gleichen Zufallszahlen gezählt werden. Dazu soll man einen weiteren Array erstellen, welcher 10 Felder für die einzelnen Zahlen besitzen soll. Dieses Array soll dann die Anzahl der einzelnen Zahlen ausgeben. Bsp. Zahl 1 kommt 350 mal vor, Zahl 2 kommt 120 mal vor u.s.w. ....
Leider klappt es bei mir gar nicht. Zwar habe ich bereits etwas ausprobiert, aber irgendwie stimmt es glaube ich nicht ganz. Es sollen auch keine Zeiger oder Pointer verwendet werden, wenn möglich.
Code:
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#define Zahl 10000
#define Elemente 10
using namespace std;
int zaehlen(int Zahlen[], int Anzahl, int Tab[]);
//int Zaehlen(int )
int _tmain(int argc, _TCHAR* argv[])
{
int i;
int j;
int Zufallszahl[Zahl];
int Tabelle[Elemente];
int Anzahl = 0;
cout << "ZUFALLSZAHLEN ZAEHLEN" << endl;
cout << endl << endl;
for (i = 0; i < Zahl; i++)
{
Zufallszahl[i] = rand() % 10 + 1;
cout << Zufallszahl[i] << setw(1) << "";
}
cout << endl << endl;
for (j = 0; j < Elemente; j++)
{
cout << zaehlen(Zufallszahl, Anzahl, Tabelle) << endl;
}
cout << endl << endl;
system("pause");
return 0;
}
int zaehlen(int Zahlen[], int Anzahl, int Tab[])
{
int i;
int j;
int zaehler = 0;
for ( i = 0; i < (Anzahl - 1); i++)
{
for (j = i + 1; j < Anzahl; j++)
{
if (Zahlen[i] == Zahlen [j])
{
Tab[zaehler] = Zahlen[i];
zaehler++;
}
}
}
return Tab[zaehler];
}