Сумма цифр массива

Задача

Найти сумму всех цифр целочисленного массива. Например, если дан массив [12, 104, 81], то сумма всех его цифр будет равна 1 + 2 + 1 + 0 + 4 + 8 + 1 = 17.

Пояснение к задаче и алгоритм решения

Каждое элемент-число массива следует разбить на цифры. Сделать это можно с помощью последовательного нахождения остатка от деления числа на 10 нацело, после чего само число делится нацело на десять (чтобы избавиться от последней уже учтенной цифры). Это делается в цикле while до тех пор, пока исходное число не обнулится. Каждую извлеченную цифру следует добавить к переменной, содержащей общую сумму. Ей присваивается нуль до вхождения в цикл перебора элементов массива.

Перед тем как последовательно делить в цикле очередное число массива необходимо присвоить его другой переменной (в примерах ниже num), иначе все элементы массива обнулятся, хотя сумма цифр исходного массива будет посчитана.

В приведенных примерах решения задачи на языках программирования заполнение массивов и подсчет сумм выполняются в одном цикле.

Исходный код на языке программирования Pascal

const
    N = 4;
var
    arr: array[1..N] of integer;
    i: byte;
    sum, num: integer;
begin
    randomize;
    sum := 0;
    for i := 1 to N do begin
        arr[i] := random(20);
        write (arr[i]:5);
        num := arr[i];
        while num > 0 do begin
            sum := sum + num mod 10;
            num := num div 10;
        end;        
    end;
    writeln;
    writeln(sum);  
end.

Пример(ы) выполнения программы на языке Pascal

    1   16   15    4
18

Исходный код на языке программирования C

#include <stdio.h>
#define N 4

main() {
    int a[N], i, sum, num;
    srand(time(NULL));
    sum = 0;
    for (i=0; i<N; i++) {
        a[i] = rand()%20;
        printf("%3d", a[i]);
        num = a[i];
        while (num > 0) {
            sum += num%10;
            num /= 10;
        }
    }
    printf("\n%d\n", sum);
}

Пример(ы) выполнения программы на языке C

  3 16 12  1
14

Исходный код на языке программирования Python

from random import random

N = 5
a = [0]*N
summa = 0
for i in range(N):
    a[i] = int(random()*20)
    print('%3d' % a[i], end='')
    b = a[i]
    while b > 0:
        summa += b%10
        b //= 10
print()
print (summa)

Пример(ы) выполнения программы на языке Python

  4 19 11  3  0
19

Исходный код на языке программирования КуМир

алг сумма цифр массива
нач
    цел N = 4, sum = 0, i, d
    цел таб a[1:N]
    нц для i от 1 до N
        a[i] := irand(0,20)
        вывод a[i]:3
        d := a[i]
        нц пока d > 0
            sum := sum + mod(d,10)
            d := div(d,10)
        кц
    кц
    вывод нс
    вывод sum
кон

Пример(ы) выполнения программы на языке КуМир

  4 10  6 20
13

Исходный код на языке программирования Basic

N = 5
dim arr(N)
sum = 0
for i=0 to N-1
    arr[i] = int(rand() * 20)
    print arr[i] + " ";
    num = arr[i]
    while num > 0
        sum = sum + num % 10
        num = num \ 10
    endwhile
next i
print
print sum

Пример(ы) выполнения программы на языке Basic

8 6 16 15 6
33

Тема

Массивы

Уровень сложности

Средний

Дата публикации