Einzelnen Beitrag anzeigen
Alt 23.11.2003, 21:15   #13
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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[].
kikakater ist offline   Mit Zitat antworten