Salve ragazzi. ho questo esercizio...data una stringa, dopo aver contato il numero di comparse che c'è per ogni vocale, (ovvero la 'a' c'è 3 volte, la 'e' c'è 5 volte ecc...), contare le parole in cui è presente ogni vocale (es. la lettera a è presente in 4 parole, la e in 5 parole ecc...).
io sono arrivato a conteggiare le vocali e fin qui tutto ben , ma non so proprio come impostare l'ultima parte relativa alle parole. grazie per l'aiuto.
di seguito vi posto il codice fino ad ora.
il mio file di lettura contiene: camera riscossa percuoti branzino
#include <stdio.h>
#include <stdlib.h>
#define DIM 200
FILE* aprifile(char[]);
void leggivocali(FILE*,FILE*,char[],char[]);
int main(int argc, char** argv) {
FILE *fp,*ff;
int k=0;
char vocali[]={'a','e','i','o','u'};
char str[DIM];
printf("Inserire nome file da aprire: ");
fp=aprifile("r");
printf("Inserisci il nome del file su cui scrivere: ");
ff=aprifile("w");
while(!feof(fp)){
fgets(str,DIM,fp);
k++;
}
leggivocali(fp,ff,str,vocali);
fclose(fp);
fclose(ff);
return (EXIT_SUCCESS);
}
FILE *aprifile(char mode[]) {
FILE *p;
char nomefile[DIM+1];
scanf("%s", nomefile);
p=fopen(nomefile,mode);
if (p==NULL) {
printf("ERRORE nell'apertura del file, riprovare!\n");
return (NULL);
}else
return p;
}
void leggivocali(FILE* p,FILE* pp,char s[],char v[]){
int k=0;
int a,e,i,o,u;
int ca,ce,ci,co,cu;
char ch;
for(k=0;k<DIM;k++){
if(s[k]==v[0]){
a++;
}else if(s[k]==v[1]){
e++;
}else if(s[k]==v[2]){
i++;
}else if(s[k]==v[3]){
o++;
}else if(s[k]==v[4]){
u++;
}
}
fprintf(pp,"Vocali Numero vocali Numero parole");
fprintf(pp,"\n");
fprintf(pp," a%14d",a);
fprintf(pp,"\n");
fprintf(pp," e%14d",e);
fprintf(pp,"\n");
fprintf(pp," i%14d",i);
fprintf(pp,"\n");
fprintf(pp," o%14d",o);
fprintf(pp,"\n");
fprintf(pp," u%14d",u);
}