Member 13851833 Ответов: 2

Цифра частоты проблема на hackerrank


Проблемная Ссылка : HackerRank[^]

вот мое решение я хочу знать что с ним не так

Что я уже пробовал:

int main()
{

    int i = 0 , resultArr[10];
    char buffer = 0;

    do
    {
        scanf("%c",&buffer);
        for ( i = 0 ; i < 10 ; i++)
        {
            if ((buffer - '0') == i)
                resultArr[i]++;
        }
    }
    while(buffer != '\n');


    for ( i = 0 ; i < 10 ; i++)
        printf("%d ",resultArr[i]);

    return 0;
}

Richard MacCutchan

Цикл for и если испытания являются излишними.

2 Ответов

Рейтинг:
1

Patrice T

Цитата:
вот мое решение я хочу знать что с ним не так

Попробуйте начать с инициализации resultArr[10] с нулями. Это может помочь.


CPallini

5.

Patrice T

Спасибо

Рейтинг:
0

CPallini

Как ppolymorphe как уже отмечалось, вам нужно обнулить инициализацию элементов массива.

int resultArr[10] = {0};

этого вполне достаточно.

Обратите внимание, что следующий код должен быть быстрее:
#include <stdio.h>
int main()
{

    int i = 0 , resultArr[10] = {0};
    char buffer = 0;

    do
    {
        scanf("%c",&buffer);
        if ( buffer >= '0' && buffer <= '9' )
          ++resultArr[buffer-'0'];
    }
    while(buffer != '\n');


    for ( i = 0 ; i < 10 ; i++)
        printf("%d ",resultArr[i]);

    return 0;
}