Операторы break и continue.

Достаточно часто при использовании циклов и почти всегда при использовании оператора switch, программисту необходимо прервать выполнение тела цикла или тела switch соответственно. break, как раз используется в таких случаях. Так же, с помощью этого оператора прерывается бесконечный цикл. Когда его нужно прервать, в тело цикла добавляется условие, при выполнении которого сработает оператор break, а цикл завершит работу. В следующем примере, реализована простая игра: один игрок загадывает число от 1 до 7, второй должен отгадать его.

#include <iostream>

using namespace std;

 

int main()

{

setlocale(LC_ALL, "rus");

 

int digit = 0;

int answer = 0;

cout << "Введите число от 1 до 7, которое должен угадать ваш противник:";

for (;;)

{

cin >> digit; // ввод загаданного числа

if (digit >= 1 && digit <= 7) // проверяем число на соответствие заданному диапазону

{

break; // если соответствует - прервать цикл

}

else // иначе попросить ввести число снова

{

cout << "Неправильный диапазон! Введите число от 1 до 7:";

}

}

 

system("cls"); //эта функция очистит экран и противник не увидит, какое число было введено

 

cout << "Попробуйте угадать число, которое загадал ваш оппонент!\n";

cout << "Это целое число от 1 до 7. Введите ваш вариант ответа:";

for (int myTry = 1;; myTry++) // myTry будет хранить число попыток

{

cin >> answer;

 

if (answer < 1 || answer > 7) // если диапазон нарушен

{

myTry--; // уменьшаем счетчик попыток на единицу

cout << "!!!Введите число в диапазоне от 1 до 7:";

}

else if (digit == answer) // если числа совпадают

{

cout << "Поздравляем! Вы отгадали число с " << myTry << "-й попытки!\n\n";

break; // прервать цикл

}

else // иначе еще одна попытка отгадать

{

cout << "Вы не угадали! Попробуйте еще раз:";

}

}

return 0;

}

Чтобы всё было честно и игрок, который загадывает, не мог ввести число из недопустимого диапазона, запускаем бесконечный цикл в котором и происходят ввод и проверка числа. Если число соответствует необходимому диапазону — цикл прерывается (строки 15 — 18), если же нет — на экране появляется предупреждение и предложение ввести число снова. Так будет происходить, пока введенное число не войдет в нужный диапазон.

После ввода корректного числа, в строке 25 вызываем специальную функцию system(«cls»); , которая очистит содержимое экрана, перед тем, как второй игрок приступит к отгадыванию числа (сработает только в windows).

Далее определяем второй бесконечный цикл (строки 29 — 47), но уже со счетчиком myTry. Он будет считать количество попыток игрока отгадать число. Игрок вводит число и оно сразу проверяется на соответствие диапазону в строках 33 — 37. Если не соответствует — предупреждаем и отнимаем единицу от счетчика попыток myTry. Иначе если число в нужный диапазон вошло, проверяем соответствует ли оно загаданному числу (строки 38 — 42): да — поздравляем и прерываем цикл, нет — переходим к выполнению строк 43 — 46 — говорим об ошибке и предлагаем ввести число снова.

Результат:

Оператор continue в C++

Этот оператор применяется тогда, когда необходимо прервать (пропустить) текущую итерацию цикла и приступить к следующей итерации. При его выполнении в цикле for происходит остановка текущей итерации, переход к изменению управляющей переменной, а затем проверка условия продолжения выполнения цикла.

Решим такую задачу: Необходимо вывести на экран те числа, которые делятся на 7 без остатка и находятся в диапазоне от 1 до 70 .

#include <iostream>

using namespace std;

 

int main()

{

for (int i = 1; i <=70; i++)

{

if (i % 7 != 0) // если число не делится на 7 без остатка

{

continue; // прервать эту итерацию цикла и выполнить i++

}

cout << i << endl;

}

return 0;

}

Если число i не делится на 7 без остатка (остаток от деления не равен 0), сработает continue. То есть строка кода 12 уже не выполнится и мы не увидим число i на экране. В случае если остаток от деления i на 7 будет равен 0 (число делится на 7 нацело), тело if выполнено не будет и число будет показано.

Результат: