Сумма или произведение цифр трехзначного числа в зависимости от его четности

Задача

Проверить трехзначное число на четность и найти сумму его цифр, если число четное, или произведение его цифр, если число нечетное.

Решение

Описание переменных: 

n - трехзначное число;
a, b, c - первая, вторая и третья цифры трехзначного числа.

Алгоритм решения задачи: 

Пусть в программе трехзначное число генерируется случайно с помощью функции random. Для этого передадим ей аргумент 900. Так будет получено случайное число от 0 до 899. Далее к результату прибавим 100. Таким образом получим случайное число от 100 до 999, т. е. охватим весь диапазон трехзначных чисел. Выражение генерации трехзначного числа и присвоения его переменной будет таким: n :=random(900) + 100.

Проверить число на четность в языке программирования Паскаль можно как минимум двумя способами:

  1. Использовать встроенную функцию odd, которая возвращает истину (True), если в качестве аргумента ей передается нечетное число, и ложь (False), если передано четное число.
  2. Найти остаток от деления числа на 2. Для этого использовать оператор mod. Если результат неравен нулю, значит число нечетное. Иначе - четное.

Будем использовать первый способ. Тогда заголовок оператора if будет выглядеть так: ifodd(n) then. Во втором случае было бы так: if n mod 2 <> 0 then.

До использования конструкции if-else извлечем из трехзначного числа цифры и присвоим их переменным a, b, c. Это делается заранее, т. к. внутри if нам бы пришлось это делать дважды: в ветке if (когда число нечетное) и в ветке else (когда число четное).

Чтобы извлечь первую цифру трехзначного числа, надо его нацело разделить на 100. Т. е. мы найдем количество сотен. Выражение на языке Pascal для этого: n div 100.

Чтобы извлечь вторую цифру трехзначного числа, можно пойти разными способами. Например, сначала избавиться от последней цифры, разделив нацело на 10, а потом от первой, найдя остаток от деления на 10. В этом случае выражение будет выглядеть так: n div10 mod 10. Можно поступить по-другому: найти остаток от деления на 100, потом разделить нацело на 10. Получится выражение n mod 100 div 10.

Последняя цифра любого числа, обозначающая единицы, извлекается путем нахождения остатка от деления на 10: n mod 10.

Программа на языке Паскаль: 

var 
	n: word;
	a,b,c: byte;
 
begin
    randomize;
    n := random(900)+100;
    writeln(n);
    a := n div 100; // извлекается первая цифра числа (сотни)
    b := n div 10 mod 10; // извлекается средняя цифра трехзначного числа (десятки)
    c := n mod 10; // извлекается последняя цифра числа (единицы)
	if odd(n) then // функция odd возвращает true, если число нечетное
		writeln('Число нечетное. Произведение цифр: ',a*b*c)
	else
		writeln('Число четное. Сумма цифр: ',a+b+c);	
end.

Примеры работы программы:

371
Число нечетное. Произведение цифр: 21
812
Число четное. Сумма цифр: 11

Тема

Условные операторы

Уровень

Комбинированные задачи

Добавить комментарий