Ausgabe passt nicht :/



  • Edit: Problem gelöst

    #include <stdio.h>
    
    int main()
    {
    	int x[20];
    	int j;
    	for(int i=0;i<20;i++)
    	{
    		printf("Geben sie einen Wert ein:"); scanf("%d",&x[i]);
    		if(x[i]==0)
    			break;
    		for(j=0;j<i;j++)
    		{
    			if(x[j]>x[j+1])
    			{
    				x[j]+=x[j+1];
    				x[j+1]=x[j]-x[j+1];
    				x[j]-=x[j+1];
    				j=0;
    			}
    
    		}
    
    	}
    
    	printf("Sortierte Werte:%d\n",i);
    	for(i=0;i<20;i++)
    	{
    		if(x[i]==0)
    			break;
    		printf("%d    ",x[i]);
    
    	}
    	printf("\n");
    	return 0;
    }
    

    werden irgentwie irgentwelche sehr hohen minus zahlen ausgegeben immer die gleichen anstatt einfach meine sortierten werte.



  • Damn doch noch ein Fehler bekomme ganz komische ausgabe 😕

    Die Werte stimmen nicht mit denen überein die ich eingegeben habe.
    Bei weitem nicht 😕



  • Hab dein Programm nicht probiert, aber was sofort auffällt ist das hier:

    if(x[i]=0) // soll doch bestimmt if(x[i]==0) so heißen oder?!
    

    Noch was ... deine "Swap"-Funktion ist etwas kryptisch, nimm doch einfach eine temporäre Variable:

    if(x[j] > x[j+1]) {
    int temp;
    temp = x[j+1];
    x[j+1] = x[j];
    x[j] = temp;
    }
    

    Oder du "xor"-st dreimal 🙂

    Weiterhin muß j echt kleiner sein als i in der innersten Schleife. Beim ersten Durchlauf greifst du sonst auf x[1] zu, das nicht korrekt initialisiert ist!



  • ja genau richtig das war bei meinem ersten fehler aber den hab ich selber korrigieren können.
    hab den code jetzt nochmal editiert.
    Bekomme mit dem code sehr merkwürdige ausgabe am ende.

    😛 das mit der temp variablen hab ich vorher so gemacht aber fand das anders irgentwie cooler XD



  • super danke 😃 nun funktionierts hab das = in der zweiten schleife weggelassen :/.
    hätte mir eigentlich klar sein müssen naja bin ja npch anfänger.



  • Noch ein Verbesserungsvorschlag: statt deine Sortierung immer von links auf das Array loszulassen, solltest du es von rechts auf das Array anwenden. Du sparst damit Vergleiche.

    Hat dein Array z.B. bereits 10 Elemente und wird nun ein 11tes angefügt, so geht dein Algorithmus alles Element von links durch, die aber bereits sortiert sind, nur um nach 10 Vergleichen erst auf das Element zuzugreifen, das tatsächlich neu dazugekommen ist. Es wäre also besser von rechts zu arbeiten und am Ende des Arrays zu beginnen und dann je nach Sortierreihenfolge mit kleiner als vorheriges Element zu vergleichen zu verlgeichen.

    Nur ein Tip 🙂


Anmelden zum Antworten