cin begrenzen???(Anfänger)



  • hallo, ich habe folgendes in meinem Programm:

    double Eingabe()
    {
        double m_Eingabe = 0.0;
        cout << "\nBitte waehlen:\nfuer lalala 1\n fuer lululu 2\n fuer lalelu 3:";
        cin >> m_Eingabe;
        return m_Eingabe;
    }
    

    kann man hier eine Begrenzung vorgeben, dass nur die Eingabe von 1,2 oder 3 möglich ist???



  • Du kannst den Wert ja mit if überprüfen und wenn er zu groß oder klein ist dann forderst du ihn erneut auf eine eingabe zu machen...



  • huhu günni, das habe ich soeben versucht, aber beim 2ten mal springt er trotzdem weiter im Programm, einmal durchläuft er die Schleife beim 2ten mal falsch beantworten geht er weiter.
    Mein Kot^^:

    double Eingabe()
    {
        double m_Eingabe = 0.0;
        cout << "\nBitte waehlen:\nfuer lalala 1\n fuer lululu 2\n fuer lalelu 3:";
        cin >> m_Eingabe;
        if(m_Eingabe>=0 && m_Eingabe <3)
        {  
            return m_Eingabe;
        }
        else if(m_Eingabe>3)
        {
            cout << "{\nFalsche Eingabe\nfuer lala 1\n fuer lulu 2\n fuer lelu 3:";
            cin >> m_Eingabe;
        }
    }
    

    Bin 😕 und 🕶 den Fehler nicht



  • Da ist ja auch nirgendwo ne Schleife! Es ist ganz klar, dass er beim zweiten Mal weiterläuft ...



  • im else block forderst du wieder eine eingabe, unabhängig davon welche zahl du eingibst. ergo: wenn er zu else kommt kommt eine eingabe.
    das cin wegmachen dann fragt der da auch nimmer.

    else if(m_Eingabe>3)
        {
            cout << "{\nFalsche Eingabe\nfuer lala 1\n fuer lulu 2\n fuer lelu 3:";
            cin >> m_Eingabe;
        }
    


  • ausserdem, warum double für int abzufragen?



  • Danke, habe es auf Integer umgestellt, und die cin´s weggelassen...
    den rest muss ich noch erforschen^^



  • Ich würde dafür eine Do-while schleife nehmen!

    do{
    cin >> m_Eingabe;

    }while(1!=m_Eingabe && 2!=m_Eingabe && 3!=m_Eingabe);



  • machs doch so
    [code]

    do
    {
    cout << "\nBitte waehlen:\nfuer lalala 1\n fuer lululu 2\n fuer lalelu 3:";
    char frage;
    frage=getch();
    switch (frage)
    {
    case '1':
    cout << "lalal ";
    break;
    case '2':
    cout << "lululu";
    break;
    case '3':
    cout << " lalelu";
    break;
    default:
    cout << "Das war leider keins der drei";
    }
    getch(); /*dient nur dazu das die konsole erst nach einem Tastendruck wieder verschwindet*/
    naja vielleicht hilft es dir
    gruß Tobias



  • hatte eben was vergessen, so ists richtig!

    cout << "\nBitte waehlen:\nfuer lalala 1\n fuer lululu 2\n fuer lalelu 3:";
    char frage;
    frage=getch();
    switch (frage)
    {
    case '1':
    cout << "lalal ";
    break;
    case '2':
    cout << "lululu";
    break;
    case '3':
    cout << " lalelu";
    break;
    default:
    cout << "Das war leider keins der drei";
    }
    getch(); /*dient nur dazu das die konsole erst nach einem Tastendruck wieder verschwindet*/
    

    naja vielleicht hilft es dir
    gruß Tobias

    Edit by AJ: Das mit den CPP-Tags üben wir noch ein wenig, hm?? 😉



  • Müsste doch eigentlich mit dem Manipulator "setw()" funktionieren oder kann der nur zur Ausgabe verwendet werden?

    MfG CSS


Anmelden zum Antworten