Инструкция continue в C++
Помимо инструкции break, завершающей работу цикла,
существует также инструкция continue, запускающая новую
итерацию цикла. Данная инструкция иногда может быть полезна для
упрощения кода, хотя практически всегда задачу можно решить и без
нее. Давайте посмотрим на практическом примере.
Пусть у нас есть числа от 1 до 9. Давайте переберем
их циклом и числа, которые делятся на 2, возведем в квадрат
и выведем в консоль, а числа, которые делятся на 3,
возведем в куб и выведем в консоль.
Вот решение описанной задачи:
for (int i = 1; i <= 9; ++i) {
if (i % 2 == 0) {
int res = i * i;
std::cout << res << "\n";
} else if (i % 3 == 0) {
int res = i * i * i;
std::cout << res << "\n";
}
}
Как вы видите, строчка вывода res повторяется два раза.
Давайте вынесем ее за if, вот так:
for (int i = 1; i <= 9; ++i) {
int res = 0;
if (i % 2 == 0) {
res = i * i;
} else if (i % 3 == 0) {
res = i * i * i;
}
std::cout << res << "\n"; // вынесли вывод за условие
}
Теперь код, однако, работает немного не так: вывод переменной
res выполнится и для чисел, которые не прошли через
if. По условию задачи это не нужно.
Поправим проблему, добавив к нашему if еще условие
else, которое будет срабатывать для чисел, не делящихся на
2 и на 3, и вызовем там инструкцию continue,
которая сразу же будет перебрасывать нас на новую итерацию цикла:
for (int i = 1; i <= 9; ++i) {
int res = 0;
if (i % 2 == 0) {
res = i * i;
} else if (i % 3 == 0) {
res = i * i * i;
} else {
continue; // перейдем на новую итерацию цикла
}
std::cout << res << "\n"; // выполнится, если делится на 2 или 3
}
Напишите цикл в диапазоне от 10 до
100, который выведет все числа,
пропуская те, сумма первой и второй цифры
которых равна 3.