Untitled
/* 1) Scrivere un sottoprogramma analizza() che riceve come parametro una stringa contenete soltanto lettere minuscole dell’alfabeto. Il sottoprogramma identifica e restituisce qual è la prima lettera nell’ordinamento alfabetico che compare nella stringa e quante volte vi compare. Esempio Stringa in ingresso: Statistiche restituite: cocci lettera: ‘c’ occorrenze: 3 bacco lettera: ‘a’ occorrenze: 1 tiene lettera: ‘e’ occorrenze: 2 2) Scrivere un programma che apre un file di testo il cui nome è ricevuto come argomento da riga di comando. Il programma legge dal file ciascuna parola (di al massimo 15 caratteri), la analizza mediante il sottoprogramma analizza() sopra definito e la stampa a video insieme ai due valori restituiti dal sottoprogramma. Gestire opportunamente gli eventuali casi di errore dovuti alla mancanza degli argomenti o al fallimento nell'apertura del file. Esempio Se il file testo.txt contiene il seguente testo: chitarra dente cocci Il programma stamperà a video: chitarra a 2 dente d 1 cocci c 3 */ #include <stdio.h> void analizza(char* stringa, char* prima_lettera, int* occorrenze) { int len = strlen(stringa); if(len == 0) { *occorrenze = 0; *prima_lettera = NULL; return; } *prima_lettera = stringa[0]; for(int i=0; i<len; i++) { if(stringa[i]<*prima_lettera) { *prima_lettera = stringa[i]; } } *occorrenze = 0; for(int i=0; i<len; i++) { if(stringa[i] == *prima_lettera) { *occorrenze++; } } } int main(int argc, char* argv[]) { if(argc != 2) { printf("Errore numero parametri"); return 0; } FILE *fp = fopen(argv[1], 'r'); if(fp) { char parola[16]; char lettera; int occorrenze; while(fscanf(fp, "%15s", parola) == 1) { analizza(parola, &lettera, &occorrenze); printf("%s %c %d\n", parola, lettera, occorrenze); } fclose(fp); }else{ printf("Errore apertura file"); } return 0; }
Leave a Comment