Anfänger Taschenrechner



  • Hallo liebe Community.
    Ich bin noch ein Anfänger und wollte jetzt einen Taschenrechner erstellen. Ich hab vollgendes Problem. Am Anfang läuft alles richtig bis ich Ja oder Nein eingeben muss (J oder N) wenn ich da was anderes eingebe, kommt am anfang der Text bitte nur J oder N eingeben und danach gleich die Rechnung wieder. Ich denke am Verständlichsten ist es, wenn ihr es einfach selbst mal euch anschaut ^^.

    // Taschenrechner
    #include <stdio.h>
    #include <stdlib.h>
    
    int a;
    int b;
    int schalter = 1;
    char opera;
    char antwort;
    
    int main ()
    {
    while(schalter == 1)
    {
    
                    printf("Rechnung:");
                    scanf("%d%c%d", &a, &opera, &b); //Eingabe z. B. 1+1
    
                    switch(opera)         //Die Rechnung und Ausgabe des Ergebnisses.
                    {
                                 case '+' : printf ("%d + %d = %d\n", a, b, a+b);
                                 getchar();
                                 break;
                                 case '-' : printf ("%d - %d = %d\n", a, b, a-b);
                                 getchar();
                                 break;
                                 case '/' : printf ("%d / %d = %d.0\n", a, b, a/b);
                                 getchar();
                                 break;
                                 case '*' : printf ("%d * %d = %d\n", a, b, a*b);
                                 getchar();
                                 break;
                                 default : printf ("%c ist kein Rechenoperator. Bitte nur + - * und /\n", opera);
                                 getchar();
                    }
                    printf("Weiterrechnen? J/N\n");  //Nochmal von vorne?
                    scanf ("%c", &antwort);
                    getchar();
                    switch (antwort)
                    {
                           case 'J' : schalter = 1; //führt die schleife weiter
                           break;
                           case 'N' : schalter = 0; //Beendet die Schleife
                           break;
                           default : printf(" Bitte nur J oder N als antwort schreiben\n");
                           getchar();
                    }
    }
    }
    

    Ich würde mich über eine Antwort freuen. MFG Dubi 🙂



  • Dann änderst du das eben mit einer weiteren Schleife.



  • Hallo,

    Du brauchst halt noch eine innere Schleife, die solange bis die gewünschte Anwort kommt, den Benutzer nervt.

    Hier mal ein Fragment:

    schalter=1;
    while( schalter )
    {
       ...
       antwort = 0;
       while( antwort != 'J' && antwort != 'N' )
       {
          puts( "Nochmal?" );
          scanf ("%c", &antwort);
          while( getchar() != '\n' )
              ;
          if( antwort == 'N' )
              schalter = 0;
       }
    }
    

    mfg Martin



  • Wieso nimmst du nicht gets? dann kannst du dir das ersparen mit dem '\n'



  • mount schrieb:

    Wieso nimmst du nicht gets? dann kannst du dir das ersparen mit dem '\n'

    Hallo,

    das stimmt. Ich hab das nur schnell hingekritzelt. Und weil das nicht das Thema war, hab ich mir jetzt nicht soviele Gedanken zu gets vs. getchar gemacht.

    Trotzdem guter Hinweis. 👍

    mfg Martin



  • @Dubi90
    Du kannst auch getchar(); vor

    printf("Weiterrechnen? J/N\n");  //Nochmal von vorne?
    

    schreiben, anstatt nach jedem case...



  • ah okay vielen dank 🙂


Anmelden zum Antworten