Сумма цифр каждого элемента в массиве целых чисел - PullRequest
1 голос
/ 23 апреля 2020

Я хочу вычислить сумму цифр в каждом элементе массива. Проблема с этим кодом, он только вычисляет сумму нечетных индексов (1,3,5 ...) в массиве. И в консоли он показывает некоторые случайные числа для четных индексов (0,2,4 ...)

Может кто-нибудь сказать мне, в чем проблема?

И да, мне нужно использовать его как массив

Вот выходные значения:

Enter how many numbers you want to calculate sum of digits: 5
Enter those numbers: 12
Enter those numbers: 33
Enter those numbers: 44
Enter those numbers: 22
Enter those numbers: 33
Sum of 0 number is: 4
Sum of 1 number is: 6
Sum of 2 number is: 40
Sum of 3 number is: 4
Sum of 4 number is: 11730950
#include <iostream>


int main(int argc, char** argv) 
{
    int n;
    int temp;
    int pom;

    cout << "Enter how many numbers you want to calculate sum of digits: ";
    cin >> n;

    int numbers[n];
    int sum[n];

    for (int i = 0; i < n; i++)
    {
        cout << "Enter those numbers: ";
        cin >> numbers[i];
    }

    for (int i = 0; i < n; i++)
    {
        while (numbers[i] > 0)
        {
        temp = numbers[i] % 10;
        sum[i]+= temp;
        numbers[i] = numbers[i]/10; 
        }

    }



    for (int i = 0; i < n; i++)
    {
        cout << "Sum of " << i << " number is: " << sum[i] << endl;
    }

    return 0;
}

1 Ответ

5 голосов
/ 23 апреля 2020

Вам нужно инициализировать массив sum, например:

int sum[n] {};

, в противном случае при первом чтении из элемента sum у вас будет неопределенное поведение.

Кроме того, массивы переменной длины не являются частью стандартного c ++. Если вы не знаете размер массива во время компиляции, просто используйте std::vector.

Если вам абсолютно необходимо использовать массив, вам нужно будет его динамически распределить, например:

int * arr = new int[n]{};
...