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;
    			}
    		}
    	}
    
    }
    

Anmelden zum Antworten