Альтернативный способ заявления goto в C++

Вот ссылка на блок-схему: http://i1146.photobucket.com/albums/o530/HTHVampire/C%20plus%20plus/Capture_zps5a6c3acf.jpg

Вот код для потоковой диаграммы, как показано, просто игнорируйте неоднозначный оператор в потоковой диаграмме.

#include <iostream>
using namespace std;

int main()
{
    //declare and initialize a variable
    int a = 0;
    //prompt user for a value
    cout << "please enter a value" << endl;
    cin >> a;

    again1:
    //enter a decision block
    if(a > 10)
    {
        if(a < 10)
        {
            again2:
            if(a < 100)
            {
                a = a - 3;
                goto again2;
            }
            else goto again1;
        }
        else
        {
            a = a - 7;
            goto again1;
        }
    }
    else cout << "the output is " << a << endl;

    return 0;
}

Могу ли я узнать, можно ли воспроизвести этот код с помощью оператора if-else вместе с оператором while? вместо заявления goto.

Спасибо за ваши гиды!

2 ответа

Эта структура должна выполнять основную логику в соответствии с блок-схемой:

while (a > 10) {
    if (a < 10) {
        while (a < 100) {
            a += 3;
        }
    } else {
        a -= 7;
    }
}

Обратите внимание, что if испытание абсурдно Однако я не рисовал блок-схему; Я просто воспроизвел это в коде.

В goto нет ничего плохого, если вы ограничиваете использование конечными автоматами. Многие учителя ошибочно запрещают его использование из-за отсутствия понимания. Для простых конечных автоматов, таких как ваш, и для декодирования протоколов он создает чрезвычайно читаемый код. Я испортил годы встроенных процедур на Си, потому что боялся использовать goto.

Я начал использовать goto, и мои отпечатки пальцев превратились в Ван Гога.

Другие вопросы по тегам