C ++: перенаправить код на определенную позицию

0

Я очень новичок в C++.

Как я могу "перенаправить" код на определенную позицию?

В основном, что я должен поставить вместо строк комментариев здесь:

if ( N>1 ) {
  // What should be here to make the code start from the beginning? 
}
else {
  // What should be here to make the code start from certain point?
}

Я понимаю, что C++ не является языком сценариев, но если код написан как скрипт, как я могу его перенаправить?

спасибо

Теги:

3 ответа

3
Лучший ответ

Команда goto будет делать то, что вы хотите, но она обычно нахмурилась в вежливых кругах :-)

Он имеет свое место, но вы, возможно, лучше научитесь структурированным методам программирования, поскольку чрезмерное использование goto ведет к тому, что мы называем кодом спагетти, трудно понять, следовать и отлаживать.

Если ваш мандат состоит в том, чтобы внести минимальные изменения в код, который звучит так, как будто он может быть плохо написан, goto может быть лучшим решением:

try_again:
n = try_something();
if (n > 1)
    goto try_again;

Со структурированным программированием у вас будет что-то вроде:

n = try_something();
while (n > 1)
    n = try_something();

Вы не можете видеть большую часть разницы между этими двумя случаями, но это потому, что это просто. Если вы закончите с ярлыками и goto разделенными на две группы, или сорок два разных ярлыка, вы попросите структурированную версию.

  • 0
    Спасибо за этот ответ! Теперь я действительно обеспокоен структурой. Я пишу простой решатель квадратного уравнения. Я хочу, чтобы программа запускалась заново, после того, как она рассчитала корни (вместо того, чтобы выйти), а затем, после того как коэффициенты определены пользователем, я хочу дать возможность их изменить. Каковы будут ваши структурные предложения в этом случае? А также, что вы можете предложить для изучения методов структурированного программирования? Спасибо большое!
  • 0
    @ user40, задайте другой вопрос, разместив фактический код, который у вас есть (это важно - без вашего кода, мы можем только дать обобщенные ответы) и спросив, как сделать явно то, что вы хотите. Суть StackOverflow заключается в том, что вопросы видят почти все, комментарии, как правило, исчезают на заднем плане, за исключением вопросов и ответов, на которых они размещены. Другими словами, вы получите гораздо лучший ответ на вопрос.
Показать ещё 2 комментария
2

Используйте функции, циклы и т.д. Для управления "потоком" вашего приложения. Подумайте о том, что код является многократно используемым, все, что будет использоваться повторно, должно быть помещено в функцию или зацикливаться.

Вот пример:

void main()
{
    int i = 0;

    SayHello();       

    if (i < 1)
    {
         SayHello();
         i++;
    }
    else
    {
         SayGoodbye();
    }
}

void SayHello()
{
    cout << "Hello" << endl;
}

void SayGoodbye()
{
    cout << "Goodbye" << endl;
}
0

Я не совсем уверен, что вы подразумеваете под "перенаправлением", но считайте следующее:

if (N > 1) {
   speak();
} else {
   do_something_else();
}

поскольку paxdiablo уже заявил, что метод goto не является хорошей практикой. Было бы лучше использовать функции, которые делают определенную вещь, таким образом отладка проще, и кто-то может действительно следовать тому, что делает ваш код (или, по крайней мере, то, что он должен делать).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню