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;
}