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 ein int .
    getchar hingegen gibt ein int zurück.

    Vielleicht probierst du es doch noch mal mit meinem Vorachlag, denn:
    Das Leerzeichen im Formatstring weist scanf 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. 😉


Anmelden zum Antworten