Zitat:
Original geschrieben von Groovy
Ok Danke...
Was macht die ganzzahlige Variable "nochmal"?
Sie wird unten mit 1 initialisiert, was hat das für einen Zweck?
Sorry, ich check diesen Algorithmus nicht ganz...
Achja und noch eine Frage:
Wieso hat die Funktion void (if(len<2) return; )
einen Rückgabewert?
|
nochmal wird mit 0 initialisiert im Kopf der for Schleife.
Der Kopf der for schleife besteht immer aus
Code:
for ( Vorbereitung[,Vorbereitung[,...]];
Bedingung oder
Zuweisung/Funktionsaufruf als Bedingung[,Bedingung oder
Zuweisung/Funktionsaufruf als Bedingung[,...]];
Increment/Dekrement bzw.
zweckentfremdet Funktions/Prozeduraufruf(e) mit oder ohne logische Verknüpfungen[,Increment/Dekrement bzw.
zweckentfremdet Funktions/Prozeduraufruf(e) mit oder ohne logische Verknüpfungen[,...]] )
also kurz:
for ( Vorbereitung ; Bedingung ; Increment/Decrement )
nochmal wird nicht mit "1" initialisiert, sondern es wird 1 ("1" als Begriff, ein NUMERISCHES Literal) als Wert der Variablen zugewiesen.
Dann zieht die Bedingung der äussersten for Schleife ... ---> somit wird diese - also die äusserste for Schleife - nocheinmal durchlaufen.
Ein Fehler ist auch im Code:
Nach
for(start=0,nochmal=0;nochmal;start++)
{
müsste es
nochmal= 0;
heißen.
Sonst wird eine Endlosschleife produziert, falls auch nur ein Zeichen umsortiert worden ist (beim ersten Durchlaufen der gesamten Zeichenkette).
cin>>string[i];
ist außerdem falsch !
Du musst die ganze Zeichenkette einlesen und nicht nur ein Char Zeichen an der Indexstelle i des Char Arrays string[].