Struct sortieren(bubblesort)



  • Hallo an alle!

    Ein kleines Problemchen habe ich, vielleicht habt ihr ja ne idee.

    Hier ist mal er code:

    do
    	{
    		counter=0;
    		for(int zaehler=durchlauf;zaehler>=1;zaehler--)
    		{
    			if(strcmp(mensch_liste[zaehler-1].nachname,mensch_liste[zaehler].nachname)==0)
    			{
    				counter=1;
    				mensch_liste[helpme] = mensch_liste[zaehler-1];
    				mensch_liste[zaehler-1] = mensch_liste[zaehler];
    				mensch_liste[zaehler] = mensch_liste[helpme];
    			}
    
    		}
    	}
    	while(counter!=1);
    

    also hier gibt er ja noch nichts aus sondern sortiert nur.
    Es wird nach den dem sortiernamen sortiert.

    wenn ich vorher 3 nachnamen angegeben habe, wird zwar sortiert, aber er lässt einen nachnamen immer weg.

    Woran liegt das 😕 😕 😕



  • Erstens: strcmp() liefert 0, wenn die verglichenen Strings identisch sind - zum Vergleichen/Sortieren brauchst du strcmp()==1 (oder -1).

    Zweitens: Vermutlich solltest du die Hilfsvariable für den swap außerhalb deines Daten-Arrays unterbringen 😉



  • ok erstens habe ich verstanden.

    was meinst du zum zweiten?
    meinst du so?

    counter=1;
    				helpme = mensch_liste[zaehler-1];
    				mensch_liste[zaehler-1] = mensch_liste[zaehler];
    				mensch_liste[zaehler] = helpme;
    

Anmelden zum Antworten