Помогите плизз. составить программу с if then. в pascal abc. номер 2

0 голосов
39 просмотров

Помогите плизз. составить программу с
if then. в pascal abc. номер 2


image

Информатика (211 баллов) | 39 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
Задача 1.
Думаю, здесь смысл довольно прост:
Сначала читаем число. Если остаток от деления данного числа на 3 будет равен нулю, значит оно будет делиться нацело на 3, не так ли? ;) Прописываем соответствующее условие и выводим результат вычислений на экран.
Задача 2.
Здесь придётся провести некоторые манипуляции с данным нам четырёхзначным числом.
Поскольку мы точно знаем, что данное нам число - четырёхзначное, пропишем несколько операций.
Возьмём, к примеру, число 4561.
Если мы нацело его разделим, т.е. 4561 div 10, то получится 456. Если мы возьмём 4561 mod 10,то получим остаток от деления 4561 на 10, т.е. 1. Таким образом мы и получаем каждую цифру данного нам числа таким образом: :)
На примере нашего же числа:
n4 := 4561 mod 10 //n4 будет равно 1
n := 4561 div 10 // n будет равно 456
n3 := 456 mod 10 //n3 будет равно 6
...
Получив все цифры по-отдельности, начинаем писать условие. Нам нужно проверить, делится ли число на 2 и на 4. Нам требуется проверить оба условия, но давайте рассудим так: если число делится на 4, то оно будет делиться и на 2, не так ли?:) С другой стороны, если оно не делится на 4, то оно возможно и будет делиться на 2, но это нас уже не волнует, т.к. одно из необходимых условий (деление нацело на 4) будет отсутствовать. Значит, просто проверяем делимость на 4:) Выводим необходимый ответ, как требуется в условии.
Задача 3.
 Тут у меня появились некоторые недопонимания. В вашем условии сказано решить с помощью if-else, однако для произвольного числа без цикла не обойтись. В прошлой задаче нам было заведомо известно, что число имеет четыре цифры, следовательно, в коде программы мы могли сразу сохранить их всех, но в данном случае количество цифр неизвестно. Я реализовал эту программу, используя цикл while и условие, находящееся в нём, но если вам нужно сделать по-другому - пишите.
 О самом решении.
 С помощью цикла мы делим наше число нацело на 10 и копируем цифру, пока оно не станет равным нулю, к примеру, так мы можем делить 5677056, с каждым шагом цикла оно будет уменьшаться: 567705, 56770, 5677... и т.д. при этом в каждом же шаге мы берём полученную цифру и сравниваем с минимальной найденной цифрой. Если наше текущее число меньше чем минимальное найденное, то минимальное заменяется найденным числом:) и так мы считаем, проходя до конца числа.
К концу цикла, в нашем min (смотрите в коде программы) сохранится минимальное число, встреченное в числе. Дальше запускаем условие: если оно делится нацело на 2 (остаток от деления на 2), то мы выводим 'YES', если не делится - 'NO'. Впрочем, варианты сообщений вы можете расписать как вам хочется:)
Исходный код для всех троих задач находится в приложении.

image
image
image
(1.2k баллов)
0

спасибо большое за решение и объеснение

0

Пожалуйста:)

0

а у меня такой вопрос в 3 программе. вы пишите while n <> do. у меня выдает что вместа do ожидалось выражение

0

Возможно вы проглядели. На кскриншоте написано while n <> 0 do

0

ааа

0

извините