Date 2 frasi.. vorrei contare quante parole della frase 1 siano presenti all'interno della frase 2..(attenzione...parole e non lettere). Le parole all'interno della frase possono essere separate da spazio, trattino o virgola.
Ho pensato di usare la funzione string strtok() che separa ogni parola dalla frase e le memorizza in un array.. Questo per ognuna delle due frasi
Il problema è che ad esempio la frase: "ciao come stai"...dovrebbe memorizzarla all'interno dell'array cosi: ciao alla posizione 0, come alla posizione 1, stai alla posizione 2.. e non lettera per lettera..altrimenti non va a vedere le parole uguali..ma mi conta ogni singola lettera.
Il mio codice non funzionante... ma che compila:
codice:#include <iostream> using namespace std; void separaparole(char frase [], char array[]){ char *s=strtok(frase, " "); int i=0; while(s!=NULL){ array[i]=*s; i++; s=strtok(NULL, " "); } } int controlla(char parole1[], char parole2[]){ int conta=0; for(int i=0; i<strlen(parole1); i++){ for(int k=0; k<strlen(parole2); k++){ if(parole1[i] == parole2[k]) conta++; } } } int main(){ char fraseA[]={"ciao come stai"}; char fraseB[]={"ciao io bene"}; char arrayA[50], arrayB[50]; separaparole(fraseA, arrayA); separaparole(fraseB, arrayB); cout<<controlla(arrayA, arrayB); system("pause"); return 0; }

Rispondi quotando