Untitled

 avatar
unknown
c_cpp
22 days ago
2.7 kB
2
Indexable
/*
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