Bitte um Hilfe zur Fehlersuche (Bubblesort)



  • Hallo! Habe folgenden Code gebaut, doch es zeigt nichts in der Konsole an.
    Woran liegt es? Hab voll die Panne grad...^^

    [code]
    
    void tauschen(int *yy, int Z)
    {
    
    int temp=0;
    
    for(int G=Z-1 ; G>0 ; G--)
       {
          for(int j=0 ; j<G ; j++)
          {
    
    		if(yy[j]>yy[j+1])
    		{
    		temp=yy[j];
    		yy[j]=yy[j+1];
    		yy[j+1]=temp;
    
    		}
    
    	  }
    
    	}
    
    	for(int i=0; i<Z; i++)
    	{
    		cout<<yy[i];
    	}
    };
    
    void main()
    
    {
    
    	int z_Feld[]={10,34,26,6,13,45,16,5};
    
    	int Z=0;
    
    	for(int g=0; z_Feld[g]!=0; g++)
    	{
    		Z=Z+1;
    	}
    
    	tauschen(z_Feld, Z);
    
    }
    
    [/code]
    


  • Hier wird beschrieben, warum du deine Ergebnisse nicht sehen kannst und was dagegen zu tun ist.
    http://c-plusplus.net/forum/viewtopic-var-t-is-111042.html



  • Wegen der Ausgabe, schau dir den Link von MIP an.

    Es gibt aber noch einen Fehler in deinem Programm und zwar beim Aufruf von tauschen.
    Du ermittelst die Länge des Array mittels einer Schleife, die aber nicht am Ende des Array aufhört, sondern solange weiterläuft bis irgendwann im Speicher eine 0 auftaucht. Das kann mal früher oder auch erst sehr spät passieren.

    Die Länge des Array lässt sich besser so bestimmen:

    int Z = sizeof(z_Feld) / sizeof(int);
    

    Den restlichen Code hab ich gerade mal durchlaufen lassen, der Sortieralgorithmus stimmt soweit, aber an deiner Stelle würde ich dem Code bessere Variablennamen und der Übersichtlichkeit halber schönere Einrückungen verpassen.



  • Hey! Ja Danke für die Tipps, ich werds jetz mal noch ändern mit der Länge, aber wir haben gelernt das das Ende eines Feldes mit dem Endekennzeichen Null bestimmt ist, oder werwechsel ich jetzt was?! *g*



  • hab die Länge mit deiner Vorgabe ermittelt, es funktioniert jetzt, und auch ohne das ich das automatische Schliessen verhindere, ich glaube das das mein Compiler
    automatisch integriert, kriege immer >press any key to continue< am Ende in Konsolen...



  • zimtstern schrieb:

    aber wir haben gelernt das das Ende eines Feldes mit dem Endekennzeichen Null bestimmt ist, oder werwechsel ich jetzt was?! *g*

    Das trifft auf char-Arrays (also Strings) zu, damit die ganzen Funktionen aus der cstring anwendbar sind, aber nicht auf normale Felder.


Anmelden zum Antworten