// Costituz.c #include <stdio.h> #define NOME_FILE "COSTITUZ.txt" int main() { FILE * file_in; char car; int nchar; // numero di caratteri int nr; // numero di r float freq; // frequenza di r file_in = fopen(NOME_FILE, "r"); if(file_in == NULL) { printf( "Non trovo il file.\n" ); exit(-1); } nchar = 0; nr = 0; fscanf(file_in , "%c", &car); while (!feof(file_in)) { // 1. conta quanti caratteri ci sono nel file COSTITUZ.TXT nchar++; // 2. conta quante volte compare la lettera 'r' maiuscola o minuscola) ; if (car == 'r'||car == 'R') { printf("%c \n", car); nr++; } fscanf(file_in , "%c", &car); } // 3. calcola come FLOAT la frequenza di occorrenza della lettera 'r' // (maiuscola o minuscola) freq = ((float) nr) / nchar; // attenzione: e'necessario il cast! printf(" Il numero di caratteri e': %d\n", nchar); printf(" Il numero di volte che compare la lettera 'r' o 'R' e': %d\n", nr); printf(" La frequenza della lettera 'r' o 'R' e': %.3g\n", freq); //4. (facoltativo) riscrivi il codice che trova quale e' la lettera // piu' ripetuta nel file costituz.txt: puoi fare una versione // elementare che conta tutte le lettere contenute nel file in oggetto, // oppure una versione piu' avanzata che considera che i caratteri, // nel linguaggio C, sono numeri crescenti. // SUGGERIMENTO: utilizzare un vettore lungo quanto tutte le lettere // dell'afabeto anglossassone (considerando sia le maiuscole che le minuscole) fflush(file_in); fclose(file_in); fflush(stdin); getchar(); exit(0); }