zliczanie cyfr

K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
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

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Rzuć okiem na kody ASCII cyfr.

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
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]

K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

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

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
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.

K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Dzieki za wyjasnienia

Pozdrawiam :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.