While20. Дано целое число $$N$$ ($$> 0$$). С помощью операций деления нацело и взятия остатка от деления определить, имеется ли в записи числа $$N$$ цифра «2». Если имеется, то вывести True, если нет — вывести False.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
program While20; var N :Integer; checkbox:Boolean; begin Write('Введите число N: '); Readln(N); checkbox:=False; while (N > 0) and (not checkbox) do begin If (N mod 10) = 2 then checkbox:=True; N:=N div 10; end; Writeln(checkbox); end. |
Другие задачи из раздела While можно посмотреть здесь.
можно ради забавы ещё break добавить, чтобы при первом совпадении расчеты прекращались 🙂 правда, бегинэнды добавлять придётся, а это в сумме лишние три строки кода.
При диапозоне integer -32768..32767 (тоесть самый максимум цикл провернётся 5 раз) я не стал использовать break. Вообще не люблю использовать break… теряется наглядность… веселее запихать if в while и смотреть на чём закончился цикл но там совсем наглядность уходит… 🙂
Вариант условия, останавливающий цикл при первом же столкновении с цифрой 2:
while (N > 0) and (not checkbox) do
Да, согласен, так лучше. Поправил:
Было:
Стало: