Bitte die Werte eingeben und mit 0 beenden:
3 6 5 99 1001 1 5
1001, 99, 6, 5, 5, 3, 1,
Alle unterstrichenen Stellen bei der Aufgabe sind Eingaben, die der Benutzer durchführen soll.
#include <fstream.h>
// Konstante für die maximale Anzahl an Zahlen definieren
const int MAX_ZAHL = 100;
// Funktion zum Vertauschen zweier Zahlen
void change(int *a, int *b)
{
int buffer; // Buffer, der für die Vertauschung benötigt wird
buffer = *a;
*a = *b;
*b = buffer;
}
// Start des Hauptprogrammes
main()
{
// Variablen deklarieren
int zahl;
int count = 0; // Aktuelle Zahl (mit 0 initialisieren)
int zahlen[MAX_ZAHL]; // Buffer für die Zahlen (max. MAX_ZAHL Zahlen)
cout << "Bitte die Werte eingeben und mit 0 beenden: ";
// Die erste Zahl einlesen
cin >> zahl;
// Testen ob Zahl ungleich 0 ist und weniger als MAX_ZAHL Zahlen
// im Buffer sind
while (zahl != 0 && count < MAX_ZAHL)
{
// Testen ob die Zahl positiv ist
if (zahl > 0)
{
// Zahl in den Buffer schreiben
zahlen[count] = zahl;
// Variable für aktuelle Zahl um eins erhöhen
count++;
// Testen ob MAX_ZAHL Zahlen eingegeben wurden
if (count == MAX_ZAHL)
{
cout << "Es können keine weiteren Zahlen eingegeben werden." << endl;
break;
}
}
// nächste Zahl einlesen
cin >> zahl;
}
// Zahlen sortieren (Selectionsort)
int max_pos, max_zahl, i, j; // Variablen deklarieren
// Alle Zahlen durchlaufen
for (i = 0; i < count; i++)
{
max_zahl = 0;
max_pos = i;
// Zahlen von i bis count-1 durchlaufen
for (j = i; j < count; j++)
{
// Testen ob Zahl an Position j größer ist als max_zahl
if (zahlen[j] > max_zahl)
{
max_zahl = zahlen[j];
max_pos = j;
}
}
// Wenn die größte Zahl nicht die Zahl an Position i ist, dann
// Zahlen vertauschen
if (max_pos != i)
change(&zahlen[i], &zahlen[max_pos]);
}
// Zahlen ausgeben
for (i = 0; i < count; i++)
cout << zahlen[i] << ", ";
cout << endl;
}