/* paragrafo 1.6 pagina 20 istogramma delle frequenze dei diversi caratteri contenuti nel testo in ingresso */ #include <stdio.h> #define LETTERE 26 #define CIFRE 10 main() { int c, i, riga, col; int max; int alfabeto[LETTERE]; int numeri[CIFRE]; int altro; for (i = 0; i < LETTERE; ++i) alfabeto[i] = 0; for (i = 0; i < CIFRE; ++i) numeri[i] = 0; altro = 0; while ((c = getchar()) != EOF) { if (c >= 'A' && c <= 'Z') ++alfabeto[c - 'A']; else if (c >= 'a' && c <='z') ++alfabeto[c - 'a']; else if (c >= '0' && c <= '9') ++numeri[c - '0']; else ++altro; } max = 0; for (i = 0; i < LETTERE; ++i) { if (alfabeto[i] > max) max = alfabeto[i]; if (alfabeto[i] > 0) printf("carattere %c compare %d\n", i+'a', alfabeto[i]); } printf("altri caratteri %d\n", altro); for (riga = 0; riga < max; ++riga) { printf("%4d | ", max - riga); for (col = 0; col < LETTERE; ++col) if (alfabeto[col] >= max - riga) putchar(col + 'a'); else putchar(' '); putchar('\n'); } max = 0; for (i = 0; i < CIFRE; ++i) { if (numeri[i] > max) max = numeri[i]; if (numeri[i] > 0) printf("carattere %c compare %d\n", i+'0', numeri[i]); } for (riga = 0; riga < max; ++riga) { printf("%4d | ", max - riga); for (col = 0; col < CIFRE; ++col) if (numeri[col] >= max - riga) putchar(col + '0'); else putchar(' '); putchar('\n'); } }