Можно ли записать эту блок-схему в код без переменных и перехода?

Можно ли написать эту блок-схему в C ++ без переменных и goto?

блок-схема

Вот что у меня уже есть:

i1;
i2;
if(w1) {
i3;
while(w2) {
i2;
if(w1) { break; } // and it shouldn't do i4;
i3;
}
i4;
}
i5;

-1

Решение

Вы можете сделать это с помощью простой рекурсии. Вы должны быть осторожны, чтобы у вашей рекурсии было соответствующее условие «стоп», чтобы избежать переполнения стека.

Называя каждую «коробку» как функцию, мы получаем в основном следующее:

#include <iostream>
using namespace std;

void start_flowing();

int main()
{
// This is the topmost "box"start_flowing();
return 0;
}

void action_0();  // first "action" box
void check_0();   // first "decision" box
void action_1();  // second "action" box
void check_1();   // second "decision" box
void action_2();  // third "action" box
void complete();  // final "action" box

void start_flowing()
{
// first box goes to second box directly
action_0();
}

void action_0()
{
// first action box goes to first decision directly
check_0();
}

void check_0()
{
// whatever this means...
// this does the evaluation of the decision
bool result = do_the_check();

if(result)
{
// continue "down" to next action box
action_1();
}
else
{
// short circuit out to completion
complete();
}
}

void action_1()
{
check_1();
}

void check_1()
{
// whatever this means...
// this does the evaluation of the decision
bool result = do_the_check();

if(result)
{
// continue "down" to next action box
action_2();
}
else
{
// jump back "up" to first action box
action_0();
}
}

void action_2()
{
// completes the sequence
complete();
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]