/* prova_esame.c */ /****************************************************************************** Implementazione della funzione conta_parole(char *a, char* b) che ritorna il numero di volte che la parola b compare nella frase a e stampa un messaggio. *******************************************************************************/ #include #include #include #define MAX_STRING_A 101 #define MAX_STRING_B 21 int conta_parole(char a[], char b[]); int conta_parole(char a[], char b[]) { int i=0, j=0; int cont=0; while (a[i] != '\0') { a[i]=toupper(a[i]); i++; } i=0; while (b[i] != '\0') { b[i]=toupper(b[i]); i++; } i=0; while (a[i] != '\0') { while ((a[i+j]==b[j]) && (b[j] != '\0')) // Confronto i caratteri della parola della frase. j++; if ((b[j]=='\0') && (!isalpha(a[i+j]))) // Condizione perché sia cont++; // verificata l'uguaglianza delle parole. else while ((isalpha(a[i+j])) && (a[i+j] != '\0')) { // Cerco l'inizio della parola successiva. j++; } i=i+j+1; j=0; } return cont; } int main() { char a[MAX_STRING_A], b[MAX_STRING_B]; int ret=0; printf("Inserire la frase a (max 100 caratteri): "); scanf("%100[A-Za-z'! ]", a); getchar(); printf("Inserire la parola b (max 20 caratteri): "); scanf("%20[A-Za-z]", b); printf("Frase: %s\n", a); printf("Parola: %s\n", b); ret=conta_parole(a,b); if (ret==0) printf("Non ho trovato alcuna occorrenza della parola.\n"); else if (ret==1) printf("Ho trovato un'occorrenza della parola.\n"); else printf("Ho trovato %d occorrenze della parola.\n", ret); exit(0); }