Загогулины 1.3

Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Может быть полезна студентам-первокурсникам и преподавателям информатики.

Модераторы: Oleg_D, Модераторы

Ответить
Fors
незнакомец
Сообщения: 4
Зарегистрирован: 02.07.2016 16:09:09

Загогулины 1.3

Сообщение Fors »

Можно использовать следующие:
· Целочисленный тип данных
· Ввод и вывод чисел
· Арифметические операции с числами, сравнение чисел
· Булев тип данных
· Ввод и вывод булевых данных
· Логические операции
· Условные операторы IF-THEN-ELSE и CASE-OF
· Цикл с проверкой в конце
· Генерация случайных чисел


Задача
Вводится число, программа должна напечатать TRUE (или FALSE в противном случае),
если запись этого числа содержит только чётные цифры.
Контрольные примеры:
Входные данные Результат
4206 TRUE
212 FALE


Подскажите как решить данную задачу?
Oleg_D
постоялец
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Сообщение Oleg_D »

Надо организовать цикл разложения исходного числа на цифры. Если будет обнаружена нечётная цифра, то цикл прекратить, и результатом назначить FALSE. Если цикл не прервётся, то результат = TRUE. Для определения очередной младшей цифры использовать операцию MOD 10 -- вычисление остатка от деления на 10. Для определения нечётности использовать операцию MOD 2 -- вычисление остатка от деления на 2. Примерно так:

Код: Выделить всё

результат := TRUE;
число:= исходное число;
пока число <> 0 выполнять
  если ((число MOD 10) MOD 2) = 1 то результат:= FALSE и прервать цикл а иначе число:= число DIV 10;
Аватара пользователя
bormant
постоялец
Сообщения: 408
Зарегистрирован: 21.03.2012 11:26:01

Сообщение bormant »

Всё намного проще:

Код: Выделить всё

  while (n<>0) and not Odd(n) do n:=n div 10;
  WriteLn(n=0);
Ответить