Инструкция break
Иногда проходить цикл до конца не нужно. Когда вы что-то ищете и нашли, нет смысла искать дальше. Инструкция break немедленно заканчивает цикл, и программа продолжает работу с кода после цикла.
Найдём первое число, начиная со 100, которое делится на 7. Цикл выводит каждое проверяемое число, чтобы было видно, где он останавливается:
for (int number = 100; number < 200; number++) {
std::cout << "Проверяем " << number << std::endl;
if (number % 7 == 0) {
std::cout << "Первое кратное 7: " << number << std::endl;
break;
}
}
std::cout << "Готово" << std::endl;Проверяем 100
Проверяем 101
Проверяем 102
Проверяем 103
Проверяем 104
Проверяем 105
Первое кратное 7: 105
ГотовоУсловие number % 7 == 0 истинно, когда остаток от деления на 7 равен 0. Когда цикл доходит до 105, условие истинно. Программа выводит результат, а break заканчивает цикл: числа от 106 и дальше уже не проверяются, и программа переходит к строке, которая выводит Готово. Без break цикл дошёл бы до 199 и вывел все 14 чисел, кратных 7, а не только первое.
Почти всегда break стоит внутри if. Сам по себе он закончил бы цикл уже на первой итерации. В циклах while и for break работает одинаково.
Часто после цикла нужно знать, что вы нашли и нашли ли вообще. Тогда сохраните результат в переменной, созданной перед циклом, со значением, которое означает «не найдено», например -1 для индекса:
std::vector<std::string> names = {"Адам", "Ева", "Пётр", "Ева"};
int position = -1;
for (int i = 0; i < names.size(); i++) {
if (names[i] == "Ева") {
position = i;
break;
}
}
if (position == -1) {
std::cout << "Не найдено" << std::endl;
} else {
std::cout << "Ева стоит под индексом " << position << std::endl;
}Ева стоит под индексом 1Благодаря break вы получаете первую Еву, с индексом 1. Без него цикл продолжился бы, и position оказалась бы равна 3 — индексу последней Евы.
Задание
- 1
В векторе
temperaturesлежат утренние температуры в том порядке, в котором их измеряли, а цикл выводит каждую при проверке. В цикле, под строкой, которая выводитПроверяем, добавьтеif, который для каждой температуры ниже нуля выводитПервый мороз:и эту температуру. Запустите программу: она выводитПервый мороз:три раза, но верно только первое. - 2
Добавьте
breakв блокifпосле вывода, чтобы цикл остановился на первом морозе. Теперь вывод заканчивается строкамиПроверяем -3иПервый мороз: -3, а остальные температуры уже не проверяются.