enum



  • Hallo!

    Ich möchte, dass mein Programm die Sekundenanzahl verschiedener Zeiteinheiten anzeigt.
    Mein Problem: Wenn ich "Sekunde", "Minute" oder "Stunde" eingebe, erhalte ich immer "Falsche Eingabe!". Wenn ich dagegen "1", "2" oder "3" eingebe, klappt's;
    aber das will ich ja nicht; man soll schon die Wörter eingeben können.
    wo liegt mein Fehler?

    #include <iostream>
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    void main()
    {
    
    int x;
    int Zeiteinheit;
    enum Zeiteinheit {Sekunde, Minute, Stunde};
    
    cout << "Geben Sie bitte die Zeiteinheit ein, deren Dauer in Sekunden Sie wissen wollen!\n";
    cin >> Zeiteinheit;
    
    x=1;
      switch (Zeiteinheit)
      {
        case Stunde: x*=60;
        case Minute: x*=60;
        case Sekunde: break;
        default: cout << "Falsche Eingabe!" << endl;
      }
    
    cout << x;
    }
    

    danke schonmal,
    microchip



  • Mit dem enum legst du nur fest das der Compiler die Werte so kennt. Das gibt dir aber nicht die Möglichkeit das cin die Konsoleneingebe für einen string in eine Zahl umwandelt. Also wenn du willst das du "Sekunde" eingeben kannst, dann musst du schon einen string einlesen und den dann weiter verarbeiten.



  • enum gibt deinen Zahlen nur ein Symbol, damit du als Programmierer es besser lesen kannst. Intern ist das Ganze immernoch ein int, den du nicht einfach mit einem via cin eingelesenen String vergleichen kannst.



  • HI,
    Kleiner Tipp am Rande ich würde using namespace std verwenden und nicht einzeln symbole importieren.

    MFG
    Michael



  • _Olaf schrieb:

    HI,
    Kleiner Tipp am Rande ich würde using namespace std verwenden und nicht einzeln symbole importieren.

    kommt drauf an.
    Gibt genug hier, die dagegen sind, mit using direktiven allzu sorglos um sich zu werfen.



  • davie schrieb:

    _Olaf schrieb:

    HI,
    Kleiner Tipp am Rande ich würde using namespace std verwenden und nicht einzeln symbole importieren.

    kommt drauf an.
    Gibt genug hier, die dagegen sind, mit using direktiven allzu sorglos um sich zu werfen.

    Bei größeren programmen kann ichs verstehen bei so kleinspielzeug ist man allerdings sowiso andauernd generft weils nicht funktioniert und dann hat man wieder vergessen eine Konstante zu importieren und muss sie importieren dann ist sie leicht vertippt mich nervt das zu Tode dashalb importiere ich immer den ganzen STD



  • 1. Bei kleinen Projekten hol ich mir auch den ganzen std, ansonsten benutze ich std::

    2. @ Microchip:

    enum Zeiteinheit {Sekunde, Minute, Stunde}; 
    Zeiteinheit Zeiteinheitenvariable;
    

    mfg
    Glamdring


Anmelden zum Antworten