[C/C++] Problem beim wiederholten Durchlauf einer Schleife

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Leon, 12. Oktober 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 12. Oktober 2008
    Problem beim wiederholten Durchlauf einer Schleife

    Hallo,

    da ich schon c++ programmiert habe, jedoch in der uni c rankommt hab ich mich mal rangesetzt und nen simplen Taschenrechner in C auf Konsolenbasis programmiert. Mein Problem , nachdem eine Rechenoperation erfolgreich ausgeführt wurde und wieder ins Menü springt, wird scheinbar sofort die Variable "auswahl" mit etwas gefüllt und die Default meldung der Switch Anweisung ausgegeben. Kann mir jemand sagen wieso nicht auf die Eingabe des Benutzers gewartet wird und die scanf eingabe ignoriert wird?

    Code:
    // Taschenrechner.cpp : Defines the entry point for the console application.
    //
    
    #include <stdlib.h>
    #include "stdafx.h"
    
    float zahl1,zahl2;
    
    void eingabe()
    {
     printf("Gebe die erste Zahl ein: ");
     scanf("%f",&zahl1);
     printf("Gebe die zweite Zahl ein: ");
     scanf("%f",&zahl2);
    }
    
    float addieren(float zahl1,float zahl2)
    {
     float ergebnis;
     ergebnis= zahl1 + zahl2;
     return ergebnis;
    }
    
    float subtrahieren(float zahl1,float zahl2)
    {
     float ergebnis;
     ergebnis= zahl1 - zahl2;
     return ergebnis;
    }
    
    float multiplizieren(float zahl1,float zahl2)
    {
     float ergebnis;
     ergebnis= zahl1 * zahl2;
     return ergebnis;
    }
    
    float dividieren(float zahl1,float zahl2)
    {
     float ergebnis;
     ergebnis= zahl1 / zahl2;
     return ergebnis;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
     char auswahl;
     do
     { 
     system("cls");
     printf(" Taschenrechner\n");
     printf(" [1] Addition\n");
     printf(" [2] Subtraktion\n");
     printf(" [3] Multiplikation\n");
     printf(" [4] Division\n");
     printf(" [0] EXIT\n");
     printf("Ihre Eingabe: ");
     scanf("%c", &auswahl);
     switch(auswahl)
     {
     case '1': 
     eingabe();
     printf("Das ergebnis lautet %9.2f \n\n",addieren(zahl1,zahl2));
     system("pause");
     break;
     case '2':
     eingabe();
     printf("das ergebnis lautet %9.2f \n\n",subtrahieren(zahl1,zahl2));
     system("pause");
     break;
     case '3': 
     eingabe();
     printf("das ergebnis lautet %9.2f \n\n",multiplizieren(zahl1,zahl2));
     system("pause");
     break;
     case '4':
     eingabe();
     printf("das ergebnis lautet %9.2f \n\n",dividieren(zahl1,zahl2));
     system("pause");
     break;
     case '0': break;
     default: printf("\nFalsche Eingabe, bitte wiederholen\n"); system("pause"); break;
     }
     }
     while(auswahl!='0');
    
     return 0;
    }
    
     
  2. 12. Oktober 2008
    AW: Problem beim wiederholten Durchlauf einer Schleife

    Das liegt daran, dass noch was im Puffer ist ( Enter: \n z.B. ).
    Einfach mit fflush leeren: fflush(stdin);
     
  3. 12. Oktober 2008
    AW: Problem beim wiederholten Durchlauf einer Schleife

    Danke, genauso so einen Befehl habe ich gesucht
    Geb dir ne positive Bewertung.
     
  4. 13. Oktober 2008
    AW: Problem beim wiederholten Durchlauf einer Schleife

    ~closed~
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.