Задача
Проверить трехзначное число на четность и найти сумму его цифр, если число четное, или произведение его цифр, если число нечетное.
Решение
n — трехзначное число;
a, b, c — первая, вторая и третья цифры трехзначного числа.
Алгоритм решения задачи:
Пусть в программе трехзначное число генерируется случайно с помощью функции random. Для этого передадим ей аргумент 900. Так будет получено случайное число от 0 до 899. Далее к результату прибавим 100. Таким образом получим случайное число от 100 до 999, т. е. охватим весь диапазон трехзначных чисел. Выражение генерации трехзначного числа и присвоения его переменной будет таким: n : = random ( 900 ) + 100 .
Проверить число на четность в языке программирования Паскаль можно как минимум двумя способами:
- Использовать встроенную функцию odd, которая возвращает истину (True), если в качестве аргумента ей передается нечетное число, и ложь (False), если передано четное число.
- Найти остаток от деления числа на 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 .
Пользователь вводит трехзначное число. Программа должна сложить цифры, из которых состоит это число. Например, если было введено 349, программа должна вывести на экран число 16, так как 3 + 4 + 9 = 16.
Как извлечь отдельные цифры из числа? Если число разделить нацело на десять, в остатке будет последняя цифра этого числа. Например, если 349 разделить нацело на 10, то получится частное 34 и остаток 9. Если потом 34 разделить также, то получится частное 3 и остаток 4; далее при делении 3 на 10 получим частное 0 и остаток 3.
В языках программирования почти всегда есть две такие операции:
1) нахождение целого при делении нацело,
2) нахождение остатка при делении нацело.
В языке программирования Python v.3 первая операция обозначается // (двумя знаками деления), а вторая — % (знаком процента). Например:
Примечание. Операции деления нацело и нахождения остатка с точки зрения арифметики применимы только к целым числам. Но в Python их можно использовать и по отношению к дробным числам:
Алгоритм нахождения суммы цифр трехзначного числа abc (где a — сотни, b — десятки и c — единицы) можно описать так:
- Найти остаток от деления abc на 10, записать его в переменную d1. Это будет цифра c.
- Избавиться от цифры c в числе abc, разделив его нацело на 10.
- Найти остаток от деления ab на 10, записать его в переменную d2. Это будет цифра b.
- Избавиться от цифры b в числе ab, разделив его нацело на 10.
- Найти остаток от деления a на 10, записать его в переменную d3. Это будет цифра a.
- Сложить цифры a, b и c.
Однако, если нам известно количество разрядов (цифр) числа, есть другой способ вычленения цифр из числа:
- Остаток от деления на 10 исходного числа дает последнюю цифру числа.
- Если найти остаток от деления на 100 исходного числа, то мы получи последние две цифры числа. Далее следует разделить полученное двухзначное число нацело на 10, и у нас окажется вторая цифра числа.
- Если исходное трехзначное число разделить нацело на 100, то получится первая цифра числа.