С оператором break вы уже встречались, если читали наши статьи об операторе switch и о цикле for. И наверняка уже имеете представление о том, как он работает. Поговорим еще немного об этом операторе, возможно кому-то будет полезно.
Досить часто при використанні циклів і майже завжди при використанні оператора switch, программисту необходимо прервать выполнение тела цикла или тела switch соответственно. break, як раз використовується в таких випадках.
Також, с помощью этого оператора прерывается бесконечный цикл. Когда его нужно прервать, в тіло циклу додається умова, при виконанні якого спрацює оператор break, а цикл завершит работу. У наступному прикладі, реализована простая игра: один игрок загадывает число от 1 до 7, второй должен отгадать его.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #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 .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #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 виконано не буде і число буде показано.
Результат:
Если вам понравилась статья, лучшей благодарностью для меня будет, якщо ви поділитеся зі своїми друзями посиланням на неї.
Я довів до розуму іграшку.
У мене вона якось так вишла .
#include
#include
using namespace std;
int main ()
{
setlocale(LC_ALL, “Rus”);
ІНТ заг = 0;
INT OTV = 0;
cout <> заг;
if (заг >= 1 && заг <= 7)
{
break;
}
else
{
cout << "Неправильный диапазон! Введите число (от 1 до 10): ";
}
}
system ("cls");
cout << "Попробуйте угадать число которое загадал ваш противник." << endl;
cout <> відп;
if (відп 10 )
{
mtry–;
поп ++;
cout << "Неправильный диапазон! Введите число (от 1 до 10): ";
}
else if (ОТВ == пилу)
{
cout << "Поздравляю.Вы угадали с " << поп ++ << " спроби !";
break;
cin.get();
}
else
{
cout << "Вы не угадали, спробуйте іще раз: ";
mtry–;
поп ++;
if(mtry == 0)
{
system ("cls");
cout << "Закончилось количество попыток. Ви програли!";
break;
cin.get();
}
}
cin.get();
}
}
<pre class="lang:C ++ декодуванням:true "#include
#include
using namespace std;
int main ()
{
setlocale(LC_ALL, “Rus”);
ІНТ заг = 0;
INT OTV = 0;
cout <> заг;
if (заг >= 1 && заг <= 7)
{
break;
}
else
{
cout << "Неправильный диапазон! Введите число (от 1 до 10): ";
}
}
system ("cls");
cout << "Попробуйте угадать число которое загадал ваш противник." << endl;
cout <> відп;
if (відп 10 )
{
mtry–;
поп ++;
cout << "Неправильный диапазон! Введите число (от 1 до 10): ";
}
else if (ОТВ == пилу)
{
cout << "Поздравляю.Вы угадали с " << поп ++ << " спроби !";
break;
cin.get();
}
else
{
cout << "Вы не угадали, спробуйте іще раз: ";
mtry–;
поп ++;
if(mtry == 0)
{
system ("cls");
cout << "Закончилось количество попыток. Ви програли!";
break;
cin.get();
}
}
cin.get();
}
}
Да блін 3 рази писав і нормальне не відображує .
видаліть коментарі
ось нормальний
поміняй діапазон в першому операторі до 10 а не 7
Як в Linux очистити екран (як це робиться в windows за допомогою функції system (“cls”); )???
Во-первых, який “екран”? – термінал?
По-друге, в Linux все набагато гнучкіше, різноманітно і дисципліновано… Режими введення-виведення см. struct termios і все що з нею пов'язано.
А управління екраном терміналу робиться, як варіант, “ескейп-послідовностями” керуючих байт. Наприклад, очистка екрану терміналу:
#define ESC 27
printf( "%c[2J", ESC );
a