Untitled
/* Si vuole realizzare le funzionalità base di un correttore ortografico che, mediante l’ausilio di un dizionario di parole salvato in un file di testo, identifica eventuali errori di battitura che hanno causato l'aggiunta di lettere errate all'interno di una parola o il mancato inserimento. Esempio: l'utente al posto di “ciao” digita “cxiuao” o “cia”. 1) Scrivere un sottoprogramma controllaParola() che riceve come parametri due stringhe parolaDiz e parolaScritta e verifica se in parolaScritta sono presenti tutti i caratteri contenuti in parolaDiz, nello stesso ordine. In caso affermativo il sottoprogramma restituisce 1, altrimenti 0. Esempio Se parolaDiz = “ciao” e parolaScritta = Se parolaDiz = “ciao” e parolaScritta = Se parolaDiz = “ciao” e parolaScritta = Se parolaDiz = “ciao” e parolaScritta = “cciaco” il sottoprogramma restituisce 1 “ccccieaco” il sottoprogramma restituisce 1 “cccceaco” il sottoprogramma restituisce 0 “cia” il sottoprogramma restituisce 0 2) Scrivere un programma che riceve da riga di comando una parola digitata dall’utente. Il programma apre il file di testo dizionario.txt contenente il dizionario di parole corrette (ciascuna lunga al massimo 30 caratteri) e, mediante l'ausilio del sottoprogramma controllaParola(), identifica e stampa a video tutte le parole del dizionario che potrebbero corrispondere alla parola ricevuta come argomento. Gestire opportunamente gli eventuali casi di errore dovuti alla mancanza degli argomenti o al fallimento nell'apertura del file. Esempio figlio famiglia padre nipote nonno Se il programma riceve da riga di comando la parola “famiglioa” e dizionario.txt contiene le parole: Il programma stampa a video: figlio famiglia */ #include <stdio.h> //ciao //cciaco int controllaParola(char *parolaDiz, char* parolaScritta) { int i=0; int j=0; while(parolaDiz[i] != '\0' && parolaScritta[j] != '\0') { if(parolaDiz[i] == parolaScritta[j]) { i++; } j++; } if(parolaDiz[i] == '\0') { return 1; } return 0; } int main(int argc, char **argv) { FILE *fp; char parolaDiz[31]; if(argc == 2) { fp = fopen('dizionario.txt', 'r'); if(fp) { while(fscanf(fp, "%30s", parolaDiz) == 1) { if(controllaParola(parolaDiz, argv[1])) { printf("%s\n", parolaDiz); } } fclose(fp); }else{ printf("Errore apertura file"); } }else{ printf("Numero argomenti sbagliato"); } return 0; }
Leave a Comment