Programma linguaggio C

maddiii
Ciao a tutti! :D
Ho davvero tanti problemi con la programmazione e se qualcuno mi desse una mano gliene sarei molto grata!

Devo risolvere l'esercizio seguente:
"Scrivere un programma in C per identificare la parola ripetuta più volte all'interno di un file di testo.
A tal proposito si facciano le seguenti assunzioni:
- Il nome del file viene specificato come primo argomento sulla linea di comando
- Il numero di caratteri e di parole nel file non è noto al momento della compilazione
- Il file contiene unicamente lettere maiuscole, spazi e caratteri di new-line.
- Il file di testo è composto da più righe
- Sono previste al massimo 5000 parole distinte
- Ciascuna parola è composta al massimo da 20 lettere
- Le parole sono separate da uno o più spazi
- In caso le parole ripetute più volte all’interno del testo siano più di una, stampare quella che
compare prima nel testo
- Viene altresì richiesto di stampare il numero di volte che tale parola compare nel testo"

La bozza di programma che ho scritto è:

#include
#include
#include

int main(int argc, char *argv[])
{
FILE *fp;
int i,flag,lung_elenco;
char parola[21],parola_corrente[21],elenco[5000];
int frequenza=0;

fp=fopen(argv[1],"r");
if(fp==NULL){
printf("errore");
exit(1);
}

if(argc!=2){
printf("errore");
exit(1);
}

lung_elenco=0;
while(fscanf(fp,"%s",parola)!=EOF && lung_elenco<5000 ){

flag=0;

for(i=0;i
if(strcmp(parola_corrente, elenco )==0){
flag=1;
frequenza++;
}
}

if(flag==1){
strcpy(elenco[lung_elenco], parola_corrente);
frequenza=1;
lung_elenco++;
}
}

fclose(fp);

return 0;
}

Secondo voi sono molto fuori strada? Mi sono bloccata.. :oops:

Risposte
Emar1
Non mi sembri molto fuori strada.

Ti consiglio di fare è di leggere il file carattere per carattere non usando fscanf, in questo modo avrai molto più controllo e, secondo me, ti sarà più chiaro. I caratteri newline e spazio saranno da trattarsi allo stesso modo e il tuo ciclo avrà una flag che indicherà se sei "dentro" una parola o no.

Prova ad apportare questa modifica :wink:

EDIT:
Non mi è chiaro come utilizzi le due stringhe parola e parola_corrente. Prova a commentare il codice descrivendo per cosa userai le variabili.


Modifica il messaggio usando l'apposito tag ("code") per racchiudere il codice per cortesia

PS Buon natale!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.