04/09/09 11:35
Ok, eccomi di nuovo
Sono alle prese con la guida di Kernighan e Ritchie "C ansi C", e ho riscontrato qualche problema sull'argomento vettori.
Il mio codice è questo:
E funziona perfettamente, per quello che deve fare: Contare quante volte compare ogni numero nella stringa di input, quanti caratteri bianchi (spazio, tab, newline) e quanti altri caratteri generici.
Solo che non capisco cosa significhi
Perchè [c - '0']? Lasciando solo [c] non funziona, ma non capisco per quale motivo
Delucidazioni?
Sono alle prese con la guida di Kernighan e Ritchie "C ansi C", e ho riscontrato qualche problema sull'argomento vettori.
Il mio codice è questo:
#include <stdio.h> main() { int c, i, nwhite, nother; int ndigit[10]; nwhite = nother = 0; for (i = 0; i < 10; ++i) ndigit[i] = 0; while ((c = getchar()) != EOF) { if (c >= '0' && c <= '9') ++ndigit[c - '0']; else if (c == ' ' || c == '\n' || c == '\t') ++nwhite; else ++nother; } printf("Cifre = "); for (i = 0; i < 10; ++i) printf("%d = %d; ", i, ndigit[i]); printf("Spazi bianchi = %d; Altri caratteri = %d\n", nwhite, nother); }
E funziona perfettamente, per quello che deve fare: Contare quante volte compare ogni numero nella stringa di input, quanti caratteri bianchi (spazio, tab, newline) e quanti altri caratteri generici.
Solo che non capisco cosa significhi
if (c >= '0' && c <= '9') ++ndigit[c - '0']
Perchè [c - '0']? Lasciando solo [c] non funziona, ma non capisco per quale motivo
Delucidazioni?
Ultima modifica effettuata da 04/09/09 11:41