![]() |
Kann mir jemand erklären wieso dieser Code nix ausgibt?:
Code:
|
Zitat:
Guter Hinweis zum Heap. |
Zitat:
Der Kopf der for schleife besteht immer aus Code:
for ( Vorbereitung[,Vorbereitung[,...]]; 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[]. |
Das bzw. die Vorbereitungsstatements werden NUR EINMAL (nämlich am Anfang) der for Schleife ausgeführt, die Bedingung wird IMMER VOR DER AUSFÜHRUNG des Schleifenkörpers abgefragt, die Inkrement(bzw. Increment) usw. Statements werden IMMER NACH DER AUSFÜHRUNG des Schleifenkörpers durchgeführt. Ein vorzeitiger Abbruch der Schleife erfolgt mit break; bzw. in der Praxis mit if(irgendeine_abbruch_bedingung_erfuellt) break;
|
Noch zu Deiner Frage:
if(len<2) return; ohne Rückgabewert wird kein Rückgabewert zurückgegeben :D D.h. return; /* ohne return 0; oder return 1; oder return ret_variable; */ ist keine Rückgabe eines Wertes. Es ist lediglich so, daß die PROZEDUR - oder void Funktion "sort" - (void bedeutet "kein Wert" bzw. "undefiniert" bzw. "nichts vorhanden") VORZEITIG verlassen wird. Es passiert nichts anderes, als daß die Rücksprungadresse (vom Stack) geladen wird und zur aufrufenden Funktion zurückverzweigt wird. Jedoch wird KEIN Rückgabewert bereitgestellt - es handelt sich eben um eine void Funktion (semantisch = bedeutungsmäßig eine Prozedur). |
Vielen Dank für deine Beiträge.
Ich bekomm aber immer noch nichts raus..., bin halt zu unfähig :heul: Also es weden ganze Zeichenketten eingelesen, hast du es so gemeint? Code:
#include <iostream.h> |
Code:
#include <iostream> nochmal muss am Anfang mit 1 initialisiert werden, hast recht und war mein Fehler. Im if Block jedenfalls auf 1 setzen und am Anfang des Schleifenblocks auf 0. 0 steht für die Annahme, daß alles bereits sortiert ist. |
Vielen Dank für deine Hilfe.
Auf den Zeiger wär ich aber nicht gekommen, weil wir stoffmäßig noch nicht so weit sind. hmm, funktioniert zwar unter Windows aber mit dem g++ Kompiler gehts nicht...eigenartig. |
Poste die Fehlermeldung des g++ Compilers. Ich weiß nicht, was es da hat. Du musst mich aufklären.
Außerdem ist der einzige Zeiger in meinem Beispiel ein Feld (Array) aus mehreren char * Zeigern namens argv. |
Die Schnittstelle der Forward Deklaration stimmt mit der der Implementierung nicht überein:
Code:
void sort(char[]) |
Alle Zeitangaben in WEZ +2. Es ist jetzt 09:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag