Zahlen sortieren!!!!
-
Hallo, soll ein Programm schreiben, dass nach Eingabe der Anzahl der Zahlen, soviele Zahlen einliest und in aufsteigender Reihenfolge der Größe nach sortiert. Nun ja, in meiner Unachtsamkeit habe ich absteigender und nicht aufsteigender gelesen. Dacht ich mir, kein Problem, machste aus dem > ein <, aber dann fehlt ein Zahlenwert und ein ganz verquirlter steh drin.
Also so funktioniert richtig, jedoch in falscher Reihenfolge (absteigend). Ändere ich den Vergleichsoperanden, funktioniert es zwar aufsteigen, aber eine Zahl verschwindet und stattdessen steht eine andere da.
Hoffe ihr könnt mir helfen.
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> #include <iostream> #define N 1000 void menge(unsigned int anzahl[1]); void einlesen1(int zahl[N]); void einlesen2(int zahl[N],unsigned int anzahl[1]); void ausgeben(int zahl[N],unsigned int anzahl[1]); void nochmal(char weiter[1]); main() { char weiter[1]; unsigned int anzahl[1]; int zahl[N]; do { menge(anzahl); einlesen1(zahl); einlesen2(zahl,anzahl); ausgeben(zahl,anzahl); nochmal(weiter); }while(weiter[1]=='j'); } void menge(unsigned int anzahl[1]) { printf("\nBitte Anzahl der Zahlen eingeben\n\n"); scanf("%i",&anzahl[1]); } void einlesen1(int zahl[N]) { printf("\nErste Zahl eingeben\n\n"); scanf("%i",&zahl[0]); } void einlesen2(int zahl[N],unsigned int anzahl[1]) { int i,j,vgl, zahlsp; for(i=1;i<anzahl[1];i++) { printf("\nNaechste Zahl eingeben\n\n"); scanf("%i",&zahl[i]); for(j=0;j<anzahl[1];j++) { if(i==j) { j=j+1; } vgl=zahl[i]<zahl[j]; if(vgl==0)//vgl=0 ==> zahl[i]>zahl[j] { zahlsp=zahl[j]; zahl[j]=zahl[i]; zahl[i]=zahlsp; } } } } void ausgeben(int zahl[N],unsigned int anzahl[1]) { int i; for(i=0;i<anzahl[1];i++) { printf("\n%i\n",zahl[i]); } } void nochmal(char weiter[1]) { printf("\nNochmal????\n\n"); fflush(stdin); scanf("%c",&weiter[1]); while(weiter[1]!='n'&&weiter[1]!='j') { printf("\nWie bitte?\n"); fflush(stdin); scanf("%c",&weiter[1]); } }
-
Was für ein Sortieralgorithmus soll das denn überhaupt sein?
Ich kann mir nicht vorstellen, dass das Programm absteigend sortieren konnte. Da sind einige ziemlich üble Fehler drin.
Als erstes würde ich das Einlesen komplett vom Sortieren trennen. Auch das mit den Arrays mit einem Element ist merkwürdig. Warum packst du das bei den Funktionen menge und nochmal nicht einfach in den Rückgabewert?