zliczanie cyfr

0

Witam, natrafilem w ksiazce do nauki jezyka C na program zliczajacy cyfry, biale znaki i inne. Otóż nie potrafie zrozumiec wyrazenia ++ndigit[c - '0']; . Dlaczego nalezy odjac ten znak zero od c, czy to zwyczajna zamiana znaku na jego wartosc ?

while((c = getchar()) != EOF)
if(c >= '0' && c <= '9')
++ndigit[c - '0'];

Z gory dziekuje za wyjasnienie

0

Rzuć okiem na kody ASCII cyfr.

0

czy to zwyczajna zamiana znaku na jego wartosc ?

Tak, z np. '3' chcesz dostać 3. W tym przypadku inna, mniej czytelna wersja to ++ndigit[c - 48]

0

sprobowalem zamienic to na ++ndigit[c + '0'] i konsola sie sypie.
rozumiem zamiane ale dlaczego akurat operacja odejmowania jest w tym przypadku konieczna ?

0

Twój powyższy post brzmi tak:

Rozumiem, że hamulec zatrzymuje samochód, ale dlaczego po jego naciśnięciu samochód staje?

Nigdy nie programuj przez permutacje (https://en.wikipedia.org/wiki/Programming_by_permutation).
Już Ci napisałem: rzuć okiem na tabelę ASCII i przyjrzyj się cyfrom.

0

Dzieki za wyjasnienia

Pozdrawiam :)

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