Ciao,
devo fare un programma che inseriti una frase e una parola svolga a seconda della scelta dell'utente una delle seguenti opzioni:
1) Comunicare da quanti caratteri è composta la frase;
2) Comunicare da quante parole è composta la frase;
3) Comunicare il numero di volte in cui nella frase compare una parola scelta dall'utente.
Solo che per svolgere questo programma ho usato la 3 funzioni, che però mi danno degli errori, qualcuno potrebbe gentilmente spiegarmi dove e che cosa ho sbagliato (in quanto e da sole 2 settimane che le sto usando e ho ancora delle grandi lacune a riguardo)
Vi posto anche il codice completo così da poter vedere come avevo pensato di svolgere tutto il programmacodice:int ncar (char); //Funzione che comunica da quante parole è composta la frase int npar (char); //Funzione che conta il numero di volte che compare una parola in una frase int nugua (char, char); //Funzione che conta il numero di volte che compare una parola in una frase
Ciao e grazie mille in anticipocodice://Fare un programma che: // 1) Comunicare da quanti caratteri è composta la frase; // 2) Comunicare da quante parole è composta la frase; // 3) Comunicare il numero di volte in cui nella frase compare una parola scelta dall'utente. #include<stdio.h> #include <string.h> #include <ctype.h> int ncar (char); //Funzione che comunica da quante parole è composta la frase int npar (char); //Funzione che conta il numero di volte che compare una parola in una frase int nugua (char, char);//Funzione che conta il numero di volte che compare una parola in una frase int main() { char parola [25]; char frase [500]; int op=0, cnt=0; //'cnt' serve da contatore, 'op' serve come opzione dell'utente printf("Scrivi una parola: \n"); fgets(parola, 25, stdin); for(cnt=0; cnt < strlen(parola); cnt++) { parola[cnt]=toupper(parola[cnt]); } printf("Scrivi una frase: \n"); fgets(frase, 500, stdin); //La funzione fgets() legge una linea dallo stream immagazzinandola nel buffer puntato da s for (cnt = 0; cnt < strlen(frase); cnt++) //strlen() - calcola la lunghezza di una stringa { frase[cnt]=toupper(frase[cnt]); } do { printf("Che cosa vuoi vedere?\n"); printf(" 1) Da quanti caratteri e\' composta la frase\n"); printf(" 2) Da quante parole e\' composta la frase\n"); printf(" 3) Il numero di volte in cui nella frase compare una parola scelta dall'utente\n"); scanf("%d", &op); } while(op!=1 && op!=2 && op!=3); switch (op) { case 1: printf("Il numero totale di caratteri da cui e\' composta la frase e\': %d", ncar(frase)); break; case 2: printf("Il numero di parole da cui e\' composta la frase e\': %d", npar(frase)); break; default: printf("Il numero di parole uguali nella frase e\': %d", nugua(parola, frase)); } system("pause"); return 0; } //Implementazione della funzione che conta i caratteri int ncar ( char frase1) { int cnt1=0, tot1=0; for (cnt1 = 0; cnt1 < strlen(frase1); cnt1++) //strlen() - calcola la lunghezza di una stringa { if(frase1[cnt]!=' ') tot1++; } return tot1; } //Implementazione della funzione che comunica da quante parole è composta la frase int npar (char frase2) { int cnt2, tot2=0; for (cnt2 = 1; cnt2 < strlen(frase2); cnt2++) //strlen() - calcola la lunghezza di una stringa { frase2[cnt2]=toupper(frase2[cnt2]); if ((frase2[cnt2]>='A')&&(frase2[cnt2]<='Z')&&(!((frase2[cnt2-1]>='A')&&(frase2[cnt2-1]<='Z'))) tot2++; } if(frase2[0]==((frase2[cnt2]>='A')&&(frase2[cnt2]<='Z'))) tot2++; return tot2; } //Implementazione della funzione che conta il numero di volte che compare una parola in una frase int nugua (char pcer, char frase3) { int i=0, cnt3, tot3=0, tot4=0; //i serve da contatore, tot3 seve per contare i caratteri uguai, e tot4 serve per contare il numero di parole uguali for(cnt3=0; cnt3 < strlen(pcer); cnt3++) { parola[cnt3]=toupper(pcer[cnt3]); } for (cnt3 = 1; cnt3 < strlen(frase3); cnt3++) //strlen() - calcola la lunghezza di una stringa { frase3[cnt3]=toupper(frase3[cnt3]); if (strcmp(pcer[tot3],frase3[cnt3])==0) { tot3++; if(tot3==strlen(pcer)) tot4++; } else tot3=0; } return tot4; }

Rispondi quotando
