Zliczanie wartości - histogram

0

Mam napisać program, który pobierze od użytkowanika liczby z zakresu od 0 do 10, w przypadku podania liczby spoza zakresu powinna zostać pominieta, a następnie wypisze ile razy każda z tych liczb pojawiła się na wejściu. Problem polega na tym, że nie ważne ile razy liczba się powtarza, wypisuje mi że powtarza się 0 razy i nie wiem gdzie mam błąd. Ktoś może mółby mnie naprowadzić?
screenshot-20181223144319.png

0

Po co zapisujesz wszystkie wartości w tablicy, jeśli możesz je zliczać w locie?

#define VAL_MAX 10
int main() {
    unsigned int histogram[VAL_MAX+1] = {0}, n;
    while(scanf("%d\n", (int*)(&n)) == 1)
        if(n <= VAL_MAX)
            histogram[n]++;

    for(unsigned int i = 0; i <= VAL_MAX; i++)
        printf("%u: %u\n", i, histogram[i]);
}

Taka implementacja przyjmie dowolną ilość liczb. Jeśli wprowadzasz z palca, CTRL+D w nowej linii zamyka strumień wejścia i powoduje, że scanf się nie powiedzie. To rzutowanie na inta to na wypadek jeśli ktoś wprowadziłby liczbę ujemną. Jeśli tak się stanie, jako unsigned int będzie mieć bardzo dużą wartość, więc nie podpadnie pod warunek n <= VAL_MAX. Mogłem zrobić jakąś literówkę, bo nie testowałem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1