int check_input(int input) { if (input >= 7) { cout << "zu hoch!" << endl; cin >> input; check_input(input); } if (game[0][input] != 0) { cout << "spalte voll, neu eingeben"; cin >> input; check_input(input); }
return input; }
wenn ich mit input eine Zahl zum Beeispiel 20 dreien oder so eingebe bekomm ich erst ein paar mal "zu hoch ausgegeben und dann wenn ich ne andere Zahl eingebe stürzt mir das Programm ab? Weis jemand woran das liegt?
Gruß
--edit: Kein HTML, sondern ThWBoard-Code. Links neben dem Eingabefeld, über den Smilies ist ein Link "Formatierungsmöglichkeiten", da steht mehr. <code> durch [ cpp ] ersetzt.Dieser Post wurde am 20.08.2003 um 16:37 Uhr von 0xdeadbeef editiert.
da du deine funktion rekursiv aufrufst, hast du noch die zu hohen werte in der variablen input (da die funktion mit call-by-value aufgerufen wird). Wenn du statt
Code:
int check_input(int input)
dies hier schreibst
Code:
int check_input(int &input) //call-by-reference
sollte wenigstens der fehler nicht mehr kommen, oder?
@Marzel: Nein, das ist es nicht. input wird ja neu eingelesen, deswegen steht der alte Wert nicht mehr drin. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra
@0xdeadbeef: aber wenn der neu eingelesene wert immer noch zu hoch ist wird zwar check_input aufgerufen, wird jedoch spaeter diese funktion verlassen, ist der wert immer noch zu hoch und bei der if-abfrage wird dann ein zu hoher array-index benutzt.
Ach, sorum. Jetzt verstehe ich, was du meinst. Klar, damit hast du recht. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra