循环,使程序从头开始

loop for making program start from the beginning

本文关键字:从头开始 程序 循环      更新时间:2023-10-16

>如果程序转到开关中的默认值,则必须使程序

从头开始

我不知道该尝试什么

switch(eingabe)
{
    case 'g':
    case 'G':
        cout << "Geben sie bitte die erste zahl ein BITTE GANZZAHLEN" << endl;
        cin >> gzahl1;
        cout << "geben sie bitte die zweite zahl ein" << endl;
        cin >> gzahl2;
        cout << "das ergebnis lautet: " << gzahl1 / gzahl2 << endl;
        break;
    case 'f':
    case 'F':
        cout << "Geben sie bitte die erste zahl ein" << endl;
        cin >> fzahl1;
        cout << "geben sie bitte die zweite zahl ein" << endl;
        cin >> fzahl2;
        cout << "das ergebnis lautet: " << fzahl1 / fzahl2 << endl;
        break;
    default: cout << "ungueltige eingabe";
}

如果程序碰巧达到开关中的默认值,我需要程序从头开始。

正如lubgr的评论所说,您可以将整个块包装在一个while循环中。因此,对于您的情况,这可能会起作用:

//start of program {
bool correct_input = false;
while(!correct_input)
{
    //code before the switch
    switch(eingabe)
    {
        case 'g':
        case 'G':
            cout << "Geben sie bitte die erste zahl ein BITTE GANZZAHLEN" << endl;
            cin >> gzahl1;
            cout << "geben sie bitte die zweite zahl ein" << endl;
            cin >> gzahl2;
            cout << "das ergebnis lautet: " << gzahl1 / gzahl2 << endl;
            //set correct_input to true 
            correct_input = true;
        break;
        case 'f':
        case 'F':
            cout << "Geben sie bitte die erste zahl ein" << endl;
            cin >> fzahl1;
            cout << "geben sie bitte die zweite zahl ein" << endl;
            cin >> fzahl2;
            cout << "das ergebnis lautet: " << fzahl1 / fzahl2 << endl;
            //set correct_input to true
            correct_input = true;
        break;
        default: 
            cout << "ungueltige eingabe";
            //next line is optional
            correct_input = false;
        break;
    }
}
//continue if correct input is inserted
//end of program } 

是的,您可以在default switch中使用goto来使您的生活"更轻松",但强烈建议不要这样做,因为它会导致意大利面条代码。所以是的,使用 while ,或者也可能do while

请尝试以下方法:

bool continueCase = true;
while (continueCase)
{
    switch (eingabe)
    {
    case 'g':
    case 'G':
        cout << "Geben sie bitte die erste zahl ein BITTE GANZZAHLEN" << endl;
        cin >> gzahl1;
        cout << "geben sie bitte die zweite zahl ein" << endl;
        cin >> gzahl2;
        cout << "das ergebnis lautet: " << gzahl1 / gzahl2 << endl;
        continueCase = false;
        break;
    case 'f':
    case 'F':
        cout << "Geben sie bitte die erste zahl ein" << endl;
        cin >> fzahl1;
        cout << "geben sie bitte die zweite zahl ein" << endl;
        cin >> fzahl2;
        cout << "das ergebnis lautet: " << fzahl1 / fzahl2 << endl;
        continueCase = false;
        break;
    default: cout << "ungueltige eingabe";
        continueCase = true;
    }
}

方法 #1

#include <iostream>
using namespace std;
int main() {
    char eingabe;
    bool isExecuted = false;
    cout << "Bitte geben sie g, G, f oder F ein!n";
    do {
        cin >> eingabe;
        switch (eingabe)
        {
            case 'g':
            case 'G':
                int gzahl1;
                int gzahl2;
                cout << "Geben sie bitte die erste zahl ein BITTE GANZZAHLEN" << endl;
                cin >> gzahl1;
                cout << "geben sie bitte die zweite zahl ein" << endl;
                cin >> gzahl2;
                cout << "das ergebnis lautet: " << gzahl1 / gzahl2 << endl;
                cout << "Bitte g, f, G oder F eingeben!nZum Beenden des Programms x eingeben.n";
                isExecuted = true;
                break;
            case 'f':
            case 'F':
                float fzahl1;
                float fzahl2;
                cout << "Geben sie bitte die erste zahl ein" << endl;
                cin >> fzahl1;
                cout << "geben sie bitte die zweite zahl ein" << endl;
                cin >> fzahl2;
                cout << "das ergebnis lautet: " << fzahl1 / fzahl2 << endl;
                cout << "Bitte g, f, G oder F eingeben!nZum Beenden des Programms x eingeben.n";
                isExecuted = true;
                break;
            default:
                cout << "ungueltige eingabenBitte g, f, G  oder F eingeben! Zum Beenden des Programms x eingeben.n";
                isExecuted = false;
                break;
        }
    } while ( false == isExecuted);
    return 0;
}

方法#2

#include <iostream>
using namespace std;
int main() 
{
    char eingabe;
    bool isExecuted = false;
    do
    {
        cin >> eingabe;
        isExecuted = processEvent(eingabe);
    }while(isExecuted == false);  
    return 0;
}
bool processEvent(char eingabe)
{
    bool execStatus = false;
    cout << "Bitte geben sie g, G, f oder F ein!n";
    switch (eingabe)
    {
        case 'g':
        case 'G':
            int gzahl1;
            int gzahl2;
            cout << "Geben sie bitte die erste zahl ein BITTE GANZZAHLEN" << endl;
            cin >> gzahl1;
            cout << "geben sie bitte die zweite zahl ein" << endl;
            cin >> gzahl2;
            cout << "das ergebnis lautet: " << gzahl1 / gzahl2 << endl;
            cout << "Bitte g, f, G oder F eingeben!nZum Beenden des Programms x eingeben.n";
            execStatus = true;
            break;
        case 'f':
        case 'F':
            float fzahl1;
            float fzahl2;
            cout << "Geben sie bitte die erste zahl ein" << endl;
            cin >> fzahl1;
            cout << "geben sie bitte die zweite zahl ein" << endl;
            cin >> fzahl2;
            cout << "das ergebnis lautet: " << fzahl1 / fzahl2 << endl;
            cout << "Bitte g, f, G oder F eingeben!nZum Beenden des Programms x eingeben.n";
            execStatus = true;
            break;
        default:
            cout << "ungueltige eingabenBitte g, f, G  oder F eingeben! Zum Beenden des Programms x eingeben.n";
            break;
    }
return execStatus;
}

你可以像这样使用 goto 语句

loop:
    switch(eingabe)
    {
        case 'g':
        case 'G':
            cout << "Geben sie bitte die erste zahl ein BITTE GANZZAHLEN" << endl;
            cin >> gzahl1;
            cout << "geben sie bitte die zweite zahl ein" << endl;
            cin >> gzahl2;
            cout << "das ergebnis lautet: " << gzahl1 / gzahl2 << endl;
            break;
        case 'f':
        case 'F':
            cout << "Geben sie bitte die erste zahl ein" << endl;
            cin >> fzahl1;
            cout << "geben sie bitte die zweite zahl ein" << endl;
            cin >> fzahl2;
            cout << "das ergebnis lautet: " << fzahl1 / fzahl2 << endl;
            break;
        default: 
            cout << "ungueltige eingabe";
            goto loop;
    }

或者你可以像这样使用 for 循环

for( ;;)
{
    switch(eingabe)
    {
        case 'g':
        case 'G':
            cout << "Geben sie bitte die erste zahl ein BITTE GANZZAHLEN" << endl;
            cin >> gzahl1;
            cout << "geben sie bitte die zweite zahl ein" << endl;
            cin >> gzahl2;
            cout << "das ergebnis lautet: " << gzahl1 / gzahl2 << endl;
            break;
        case 'f':
        case 'F':
            cout << "Geben sie bitte die erste zahl ein" << endl;
            cin >> fzahl1;
            cout << "geben sie bitte die zweite zahl ein" << endl;
            cin >> fzahl2;
            cout << "das ergebnis lautet: " << fzahl1 / fzahl2 << endl;
            break;
        default: 
            cout << "ungueltige eingabe";
            continue;
    }
    break;
}

我正在使用一个 do-while 循环(见 http://www.cplusplus.com/doc/tutorial/control/(来不断询问用户输入。当用户输入 x 时,程序终止。当用户输入 g、G、f 或 F 时,将执行这些字母的切换大小写。当用户输入其他内容时,将执行默认大小写。重复提问的重要台词如下。

do {

} while (eingabe != 'x');

他们组成了做而循环。

#include <iostream>
using namespace std;
int main() {
    char eingabe;
    cout << "Bitte geben sie g, G, f oder F ein!n";
    do {
        cin >> eingabe;
        switch (eingabe){
            case 'g':
            case 'G':
                int gzahl1;
                int gzahl2;
                cout << "Geben sie bitte die erste zahl ein BITTE GANZZAHLEN" << endl;
                cin >> gzahl1;
                cout << "geben sie bitte die zweite zahl ein" << endl;
                cin >> gzahl2;
                cout << "das ergebnis lautet: " << gzahl1 / gzahl2 << endl;
                cout << "Bitte g, f, G oder F eingeben!nZum Beenden des Programms x eingeben.n";
                break;
            case 'f':
            case 'F':
                float fzahl1;
                float fzahl2;
                cout << "Geben sie bitte die erste zahl ein" << endl;
                cin >> fzahl1;
                cout << "geben sie bitte die zweite zahl ein" << endl;
                cin >> fzahl2;
                cout << "das ergebnis lautet: " << fzahl1 / fzahl2 << endl;
                cout << "Bitte g, f, G oder F eingeben!nZum Beenden des Programms x eingeben.n";
                break;
            default:
                cout << "ungueltige eingabenBitte g, f, G  oder F eingeben! Zum Beenden des Programms x eingeben.n";
                break;
        }
    } while (eingabe != 'x');
    return 0;
}