1 Востаннє редагувалося kerimov_e (04.05.2021 11:28:28)

Тема: С: Помилка в коді. Неправильно рахує

Завдання: Визначити функцію обчислення суми цифр довільного натурального числа та за допомогою неї з’ясувати, який з членів генерованої послідовності має найбільшу таку суму.

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int sumdigs(int k);

int sumdigs(int k)
{
    int s = 0;
    while (k > 0)
    {
        s += k % 10;
        k = k / 10;
    }
    return s;
}
int main()
{
    double s = 0, a;
    unsigned int i, n,x;
    int smax,xmax;
    printf("n=");
    scanf_s("%u", &n);
    for (int i = 0; i < n; i++)
    {
        x = rand() % 100;
        printf("%d ", x); 
    } 
    smax = xmax = 0;

    for (i = 0; i < n; i++)
    {
        int k;
        k = sumdigs(x);
        if (k > smax) 
        {
            smax = k;
            xmax = x;
        }
    }
    printf("\nMax summ numbers =%d in number %d\n", smax, xmax); 
    _getch();
    return 0;
}
 

2

Re: С: Помилка в коді. Неправильно рахує

Ви не зберігаєте всю послідовність, лише останній x.

3

Re: С: Помилка в коді. Неправильно рахує

koala написав:

Ви не зберігаєте всю послідовність, лише останній x.

Я зробив вже, потрібно було smax = xmax = 0; винести за цикл. В цьому вся проблема

4

Re: С: Помилка в коді. Неправильно рахує

Код покажіть. Бо у вас цей рядок і так за циклом.