Programm wiederholen
-
f.-th. schrieb:
Vielleicht hättest du die Fehlermeldung zeigen sollen
Dann wären die Tipps besser
Ja da hast du Recht. Bisher hatte ich aber noch nicht so gravierende Probleme, dass ich in den Logs nachschauen musste. Hab es aber jetzt gefunden.
30:14: error: 'c' undeclared (first use in this function) 30:14: note: each undeclared identifier is reported only once for each function it appears in
Das klingt für mich, als wäre die Variable c nicht deklariert?!
edit:
Hmm... hab jetzt mal folgendes geändert (Zeile 10 und Zeile 28-30):
#include<stdio.h> int main() { do { float BB, ante, spieler, chips; int c, temp; printf("---------------M-Rechner----------------"); printf("\nBB: "); scanf("%f", &BB); printf("\nAnte: "); scanf("%f", &ante); printf("\nSpieler: "); scanf("%f", &spieler); printf("\nStack: "); scanf("%f", &chips); printf("\nM: %.3f", chips/(BB+0.5*BB+ante*spieler)); printf("\nNochmal? (j oder n): \n"); scanf("%c%c", &c, &temp); } while ('c' == 'j'); return 0; }
Das Programm kann jetzt ausgeführt und benutzt werden. Wenn ich allerdings bei der Frage 'Nochmal?' das 'j' eintippe und mit Enter bestätige, wird das Programm beendet...
-
In c wird das '\n' eingelesen, und die Eingabe in temp. (Reihenfolge beachten)
Zudem vergleichst du zwei Zeichen-Konstanten miteinander.
Der Vergleich ist immer unwahr.
Sollte aber der Compiler als Warnung anmeckern.
Sieh mal genauer hin, was links vom == steht.%c erwartet übrigens einen Zeiger auf ein
char
, nicht auf einint
.
getchar
hingegen gibt einint
zurück.Vielleicht probierst du es doch noch mal mit meinem Vorachlag, denn:
Das Leerzeichen im Formatstring weistscanf
an, alle Whitespace (dazu gehört auch '\n') zu überlesen.
-
Shelldor schrieb:
30:14: error: 'c' undeclared (first use in this function) 30:14: note: each undeclared identifier is reported only once for each function it appears in
Das klingt für mich, als wäre die Variable c nicht deklariert?!
Beachte den Scope.
c existiert nur innerhalb der do-while-Schleife.
Der Test ist aber außerhalb.Definiere c (als char) in Zeile 6 und gut ist.
-
DirkB schrieb:
Shelldor schrieb:
30:14: error: 'c' undeclared (first use in this function) 30:14: note: each undeclared identifier is reported only once for each function it appears in
Das klingt für mich, als wäre die Variable c nicht deklariert?!
Beachte den Scope.
c existiert nur innerhalb der do-while-Schleife.
Der Test ist aber außerhalb.Definiere c (als char) in Zeile 6 und gut ist.
Waaaaahnsinn!!! Das hat funktioniert wie du gesagt hast
Es lag tatsächlich daran, dass das c innerhalb der Schleife deklariert wurde.
Ohhh man. ich bin so blöd
-
30:14: error: 'c' undeclared (first use in this function)
Das bedeutet der Compiler kennt an dieser Stelle des Quelltextes 'c' nicht.
Nun überlege mal warum das so ist.
-
Okay, hast schon
-
DirkB schrieb:
Beachte den Scope.
c existiert nur innerhalb der do-while-Schleife.
Der Test ist aber außerhalb.
Definiere c (als char) in Zeile 6 und gut ist.Wäre auch meine erste Idee gewesen, aber: kann man in C überhaupt Variablen so definieren.
Sorry hab's irgendwie vergessen, aber zweifle daran.
-
EOP schrieb:
DirkB schrieb:
Beachte den Scope.
c existiert nur innerhalb der do-while-Schleife.
Der Test ist aber außerhalb.
Definiere c (als char) in Zeile 6 und gut ist.Wäre auch meine erste Idee gewesen, aber: kann man in C überhaupt Variablen so definieren.
Sorry hab's irgendwie vergessen, aber zweifle daran.Seit kurzem (ca. 1999) geht das.
-
DirkB schrieb:
Seit kurzem (ca. 1999) geht das.
Huch, wie die Zeit vergeht.
-
Shelldor schrieb:
Das Programm kann jetzt ausgeführt und benutzt werden. Wenn ich allerdings bei der Frage 'Nochmal?' das 'j' eintippe und mit Enter bestätige, wird das Programm beendet...
logisch, in zeile 30 schreibst du ja auch 'c'=='j'. da das immer unwahr bzw. falsch ist, wird die schleife logischerweise auch abgebrochen.