Drei eingegebene Zahlen sortieren
-
Wieso einfach wenn es schwieriger geht?
int main(void) { int zahlen[3]; printf("Geben Sie drei Zahlen an. Diese werden dann sortiert wieder ausgegben.\n"); printf ("Zahl 1:"); scanf ("%d", zahlen); printf ("Zahl 2:"); scanf ("%d", zahlen + 1); printf ("Zahl 3:"); scanf ("%d", zahlen + 2); int comp(const void *a, const void *b) { int ia = *((int*) a); int ib = *((int*) b); if(ia < ib) return -1; if(ia == ib) return 0; return 1; } qsort(&zahlen, sizeof zahlen / sizeof *zahlen, sizeof *zahlen, comp); printf ("Die groesste Zahl ist die %d, die zweitgroesste ist die %d und die kleinste Zahl ist die %d.\n", zahlen[0], zahlen[1], zahlen[2]); return 0; }
-
supertux schrieb:
Wieso einfach wenn es schwieriger geht?
Weil "beliebig viele Zahlen sortieren" ein komplizierteres Problem als "genau 3 Zahlen sortieren" ist.
Weil der Aufruf von qsort() auf dem Wissensstand des OPs vermutlich eben NICHT einfacher ist.
-
Zeile 30 ist UB,
in Zeile 18+19 wird const weggecastet -> Schrott
-
Die Compare-Funktion lässt sich noch dramatisch verkürzen:
int comp(const void *a, const void *b) { return *(int*)b - *(int*)a; }
-
Aber nur, wenn man noch Zusatzinformationen über die zu sortierenden Zahlen hat - ansonsten kann das potentiell underflowen.
-
SG1 schrieb:
Aber nur, wenn man noch Zusatzinformationen über die zu sortierenden Zahlen hat - ansonsten kann das potentiell underflowen.
Das kapiere ich nicht. Bei welchen Zahlen passiert ein Underflow?
-
z.B. b = INT_MIN, a = INT_MAX
-
SG1 schrieb:
z.B. b = INT_MIN, a = INT_MAX
Alles klar, wenn das Ergebnis der Subtraktion kleiner wird als INT_MIN.
-
supertux schrieb:
Wieso einfach wenn es schwieriger geht?
Weil einfach weniger schwer ist?
-
puhhh...
erstens ist der Thread ziemlich alt und zweitens steht eine nette Lösung genau dazu im (ziemlich guten) C-Einsteiger-Buch von Helmut Erlenkötter.
(Zur Erläuterung der Logik-Fähigkeiten von printf)
-
nachtfeuer schrieb:
puhhh...
erstens ist der Thread ziemlich alt und zweitens steht eine nette Lösung genau dazu im (ziemlich guten) C-Einsteiger-Buch von Helmut Erlenkötter.
(Zur Erläuterung der Logik-Fähigkeiten von printf)Könntest du bitte hier im Forum erläutern, was es mit der Logik-Fähigkeit von printf auf sich hat?
-
Lit schrieb:
nachtfeuer schrieb:
puhhh...
erstens ist der Thread ziemlich alt und zweitens steht eine nette Lösung genau dazu im (ziemlich guten) C-Einsteiger-Buch von Helmut Erlenkötter.
(Zur Erläuterung der Logik-Fähigkeiten von printf)Könntest du bitte hier im Forum erläutern, was es mit der Logik-Fähigkeit von printf auf sich hat?
Das wollte ich auch schon fragen.