Ergebnis 1 bis 3 von 3

Thema: Kleiner Taschenrechner

  1. #1
    HTML Newbie
    Registriert seit
    15.10.2009
    Beiträge
    5
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Kleiner Taschenrechner

    Aufgabe:
    Entwickeln Sie eine Konsolenanwendung "Taschenrechner", welche nach Eingabe einer ersten Zahl a, des Rechenzeichens (+,-,* oder /) und einer zweiten Zahl b das Ergebnis oder ggf. eine Fehlermeldung ausgibt.

    Hier mein Quelltext:

    Code:
    int main()
    {
        cout << " Geben Sie die erste Zahl ein: ";
        double a,b,erg;
        int op;
        cin >> a;
        
        cout << " Geben Sie den Operator (+,-,*,/) ein: ";
        cin >> (op);
        
        
        cout << " Geben Sie die zweite Zahl ein ";
        cin >> b;
        
        switch (op)
        {
                  case '+':
                  {
                       erg = a+b;
                       cout << "Das Ergebnis lautet: " << erg ;
                       break;
                  }
                  case '-':
                  {
                       erg = a-b;
                       cout << " Das Ergebnis lautet: " << erg;
                       break;
                  }
                  case '*':
                  {
                       erg = a*b;
                       cout << " Das Ergebnis lautet: " << erg;
                       break;
                  }
                  case '/':
                  {
                       break;
                  }
                  default:
                  {
                    cout << " Falscher Operator ";   //sonst
                  }
        } //end of Switch
        
      getch();    
    }

    folgendes Problem: Nach der Eingabe der ersten Zahl und dem Operator (+,-,*,/) erscheint gleichzeitig:
    Geben sie die zweite Zahl ein Falscher Operator

    Könnte mir jemand sagen warum das so ist?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Geändert von The User (15.10.2009 um 22:00 Uhr)

  2. #2
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: kleiner_Taschenrechner

    Tach!

    Wenn du einen Integer hast (op), so werden bei der Eingabe normale Ziffern und evtl. ein Vorzeichen erwartet. Du gibst allerdings ein Zeichen ein. Der Operator landet in einem undefinierten Zustand (er wurde nie zugewiesen) und cin gerät in einen Fehlerzustand, sodass weiter Eingaben nicht abgewartet werden. Deshalb solltest du als Typen für op char (Zeichen) wählen, dann kannst du ein beliebiges Zeichen eingeben. Käme es auf besondere Stabilität an, solltest du die Variablen entweder initialisieren oder prüfen, ob Eingabefehler aufgetreten sind (das machst du mit "if(!cin)", aber ich vermute, dass das an dieser Stelle weniger wichtig ist.

    Ach ja: Verwende bitte die [ code ] - Tags.

    Viele liebe Grüße
    The User

  3. #3
    HTML Newbie
    Themenstarter

    Registriert seit
    15.10.2009
    Beiträge
    5
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Kleiner Taschenrechner

    Hallo,

    vielen dank, war wirklich nur die Umwandlung von int in char.

    Hier der funktionierende code:

    Code:
    #include <cstdlib>
    #include <iostream>
    #include <conio.h>
    #include <math.h>
    
    using namespace std;
    
    int main()
    {
        cout << " Geben Sie die erste Zahl ein: ";
        double a,b,erg;
        char op;
        cin >> a;    
        
        cout << " Geben Sie den Operator (+,-,*,/) ein: ";
        cin >> (op);     
        
        cout << " Geben Sie die zweite Zahl ein ";
        cin >> b;
        
        switch (op)
        {
                  case '+':
                  {
                       erg = a+b;
                       cout << "Das Ergebnis lautet: " << erg ;
                       break;
                  }
                  case '-':
                  {
                       erg = a-b;
                       cout << " Das Ergebnis lautet: " << erg;
                       break;
                  }
                  case '*':
                  {
                       erg = a*b;
                       cout << " Das Ergebnis lautet: " << erg;
                       break;
                  }
                  case '/':
                  {
                       erg = a/b;
                       cout << " Das Ergebnis lautet: " << erg;
                       break;
                  }
                  default:
                  {
                    cout << " Falscher Operator ";   //sonst
                  }
        } //end of Switch
        
      getch(); 
       
               
        
        
    }
    -close-

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •