Brauche Hilfe bei einem Programm (sortieren von Zahlen)!!!!
-
Habe folgendes Programm geschrieben:
/* Sortieren durch Vertauschen */
#include <stdio.h>void sort(int (*Feld)[5], int anzahl)
{
int i, j, min, index, temp;for (i=0; i<anzahl; i++)
{
min = (Feld)[i];
index = i;
for (j=i+1; j<anzahl; j++) / Minimum suchen */
{
if ((*Feld)[j] < min)
{
min = (*Feld)[j];
index = j;temp = (*Feld)[i]; /* Vertauschen von Minimum und linkem Element */
(*Feld)[i] = (*Feld)[index];
(*Feld)[index] = temp;
}
}
}
}int main()
{int eingabe[5];
int i=4711;
int j=4711;
printf ("Bitte geben Sie was ein:");for (i=0; i<5;i++)
scanf ("%1d",&eingabe[i]);sort (&eingabe, 5);
printf ("Hier die sortierte Eingabe:\n");for(j=0;j<5;j++)
printf ("%d",eingabe[j]);return (0);
Habe nun das Problem das er bei einer Eingabe von 5 Zahlen auch richtig sortiert. Aber gibt man nur 4 oder 3 Zahlen ein, sortiert er nicht mehr und bricht einfach ab. Wie kann ich dieses Problem lösen?
Ich hoffe es kann mir einer helfen.Gruß
nici
-
Das liegt daran, weil du fest von 5Zahlen ausgehst, du solltest das ganze
mit ner Variablen für die Größe statt der 5machen.Edit:
Vergiss was ich gesagt habe, habe den Code falsch gelesen.
Du solltest in Zukunft Code-Tags verwenden.Ich finde dein Beispiel recht unübersichtlich, falls das nen Bubblesort sein soll,
hab ich hier mal ein funktionierendes Beispiel für dich.#include <string.h> #include <stdio.h> #include <stdlib.h> void bubble (char *items, int count); int main (void) { char s[255]; puts ("Enter a String:"); gets (s); bubble (s,strlen(s)); printf ("The sorted String is: %s.\n",s); gets (s); return 0; } void bubble (char *items, int count) { register int a,b; register char t; for (a = 0; a < count; a++) { for (b = count -1; b != a; b--) { if (items[b-1] > items[b]) { t = items[b-1]; items[b-1] = items[b]; items[b] = t; } } } }