Zahlen sortieren



  • Ich soll ein Programm schreiben, dass 10 Zahlen einließt und sie der Reihenfolge nach sortiert.
    Dabei soll das ganze "manuell" funktionieren und nicht mit qsort ect.

    Ich habe schon angefangen:

    // Ließt 10 Zahlen ein und sortiert diese 
    
    #include <stdio.h>
    
    int main(void)
    {
    	int count1, count2;
    	int tmp = 0;
    	int zahlen[9];
    
    	// EINGABE
    
    	puts("Bitte geben Sie 10 Zahlen ein: \n");
    	for (count1 = 0; count1 < 10; count1++)
    	{
    		scanf("%d", &zahlen[count1]);
    	}
    
    	// UNSORTIERTE AUSGABE
    
    	puts("\nUnsortiert:\n");
    
    	for (count1 = 0; count1 < 10; count1++)
    	{
    		printf("%d\n", zahlen[count1]);
    
    	} 
    
    	// SORTIERTE AUSGABE
    
    	puts("\nSortiert:\n");
    
    	for (count2 = 0; count2 < 10 ; count2++)	
    	{
    		for (count1 = 0; count1 < 10; count1++)
    			{	
    				if ( zahlen[count1] > zahlen[count2] )
    				{
    					tmp = zahlen[count2];
    					zahlen[count2] = zahlen[count1];
    					zahlen[count1] = tmp;
    				}
    				else
    					;
    			}
    	}
    
    	for (count1 = 0; count1 < 10; count1++)
    	{
    		printf("%d\n", zahlen[count1]);
    
    	} 
    
    	return 0;
    }
    

    Aber die letzte Zahl wird immer weggelassen bzw. eine Zahl doppelt kopiert und ich weiß nicht, wie ich dem entgegenwirken kann.

    P.S. Bin noch ziemlicher Anfänger



  • Simonek schrieb:

    ...
    	int zahlen[9];
    ...
    

    probier' mal mit 'int zahlen[10];' 😉
    :xmas2:



  • Das hat jetzt geklappt 🙂

    Mir hat man nur gesagt, dass das Nullte Array auch schon zählt, daher dachte ich dass dieses Array schon 10 Elemente hat ?!



  • Simonek schrieb:

    Das hat jetzt geklappt 🙂

    Mir hat man nur gesagt, dass das Nullte Array auch schon zählt, daher dachte ich dass dieses Array schon 10 Elemente hat ?!

    Wie sagte mal ein sehr guter Programmierer bei uns: "Es ist immer einer mehr oder einer weniger als man denkt !"
    😉

    Du musst unterscheiden zwischen
    - der Deklaration:

    int zahlen[<wieviele Elemente soll das Array haben>];
    

    und
    - dem Zugriff

    zahlen[<das wievielte Element soll verwendet werden>] = 1;
    

    Zweiteres geht von 0 bis <wieviele Elemente soll das Array haben>-1.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Wie sagte mal ein sehr guter Programmierer bei uns: "Es ist immer einer mehr oder einer weniger als man denkt !"

    das muss ein sehr guter pascal-programmierer sein 😉
    :xmas2:


Anmelden zum Antworten