Альтернативный способ заявления 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, и мои отпечатки пальцев превратились в Ван Гога.