[#] Линейные алгоритмы
vit01(mira, 1) — All
2015-12-04 04:13:43


Пользователь вводит трехзначное число. Программа должна сложить цифры, из
которых состоит это число. Например, если было введено 349, то программа
должна вывести на экран число 16 (т. к. 3 + 4 + 9 = 16).
Как извлечь отдельные цифры из числа? Если число разделить нацело на десять,
то в остатке будет последняя цифра этого числа. Например, если 349 разделить
нацело на 10, то получится частное 34 и остаток 9. Если потом 34 разделить
также, то получится частное 3 и остаток 4; далее при делении 3 на 10 получим
частное 0 и остаток 3.
В языках программирования обычно нет такой арифметической операции, которая бы
давала два результата: частное и остаток. Зато есть две отдельные операции: 1)
нахождение целого при делении нацело и 2) нахождение остатка при делении
нацело. В языке программирования Python v.3 первая операция обозначается //
(двумя знаками деления), а вторая - % (знаком процента). Например:
    >>> 34 // 10
    3
    >>> 34 % 10
    4
Примечание. Необходимо знать, что операции деления нацело и нахождения остатка
с точки зрения арифметики применимы только к целым числам. Но в Python их
можно использовать и по отношению к дробным числам:
    >>> 34.5 % 10
    4.5
    >>> 34.5 // 10
    3.0
    >>> 34.5 // 12.9
    2.0
Итак, алгоритм нахождения суммы цифр трехзначного числа abc (где a - сотни, b - десятки и c - единицы) можно представить в следующем виде:
1. Найти остаток от деления abc на 10, записать его в переменную (d1). Это будет цифра c.
2. Избавиться от цифры c в числе abc, разделив его нацело на 10.
3. Найти остаток от деления ab на 10, записать его в переменную (d2). Это будет цифра b.
4. Избавиться от цифры b в числе ab, разделив его нацело на 10.
5. Найти остаток от деления a на 10, записать его в переменную (d3). Это будет цифра a.
6. Сложить цифры a, b и c.
    n = input("Введите трехзначное число: ")
    n = int(n)
    d1 = n % 10
    n = n // 10
    d2 = n % 10
    n = n // 10
    d3 = n % 10
    print("Сумма цифр числа:", d1 + d2 + d3)
Однако, если уж нам известно количество разрядов (цифр) числа, то можно найти
способ "вычленения" цифр из числа и по-хитрее.
1. Остаток от деления на 10 исходного числа дает последнюю цифру числа.
2. Если найти остаток от деления на 100 исходного числа, то мы получи последние две цифры числа. Далее можно просто разделить полученное двухначное число нацело на 10, и у нас окажется вторая цифра числа.
3. Если исходное трехзначное число разделить нацело на 100, то получится первая цифра числа.
    n = input("Введите трехзначное число: ")
    n = int(n)
    d1 = n % 10
    d2 = n % 100 // 10
    d3 = n // 100
    print("Сумма цифр числа:", d1 + d2 + d3)
Результат работы обоих скриптов одинаков:
    Введите трехзначное число: 742
    Сумма цифр числа: 13