Ciao ragazzi..
ho un problema con un programma..
sono riuscita a fare la prima parte che mi richiede di inserire una parola in una lista linkata ordinata ogni qual volta viene ricevuta in input.
Il problema è che devo contare il numero di vocali presenti in lista.
Vi posto il mio codice
mi rendo conto che la funzione ContaNumeroVocaliInLista non passa la lista, passa solo l'array di char..ma non so passare la lista..codice:#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_DIM 20 typedef struct Elenco{ char info[MAX_DIM]; struct Elenco *next; } Elenco; typedef Elenco * puntElenco; puntElenco inserisci(puntElenco L, char*word){ puntElenco q; q=(puntElenco)malloc(sizeof(Elenco)); //crea un elenco allocandolo sulla memoria dinamica strcpy(q->info,word); q->next=L; //lega al resto della lista return(q); //ritorna al nuovo puntatore della lista } //definizione funzione di inserimento in lista puntElenco InserisciElementoInLista(puntElenco L,char*parola){ puntElenco q=L, prec; int PosTrovata=0; if(q==NULL){ // lista vuota q=inserisci(L,parola); return(q); } //lista con una parola con inseriemnto in testa if(strcmp(q->info,parola)>=0){ q=inserisci(L,parola); return q; } //lista con almeno una parola più inserimento dopo la prima parola while (q!=NULL && (PosTrovata==0)) { if(strcmp(q->info,parola)<0) { prec=q; q=q->next; } else PosTrovata=1; } prec->next=inserisci(q,parola); return (L); } //definizione funzione di visualizzazione lista void VisualizzaLista(puntElenco L){ puntElenco q=L; printf("\nLista parole:\n\n"); while(q!=NULL){ printf("%s\n",q->info); q=q->next; } printf("\n"); } void ContaNumeroVocaliInLista(char word[], int *pvocali){ char c; int count; for(count=0;count<MAX_DIM;++count){ if (c== 'a' && c== 'A' || c== 'e' && c== 'E' || c== 'i' && c== 'I' || c== 'o' && c== 'O' || c== 'u' && c== 'U' ) ++ *pvocali; } return; } int main (){ puntElenco el_parole=NULL; el_parole = NULL; int scelta,a=1; int vocali=0; char word[MAX_DIM]={'\0'},lunga[MAX_DIM]={'\0'}; do{ //creazione MENU printf("SCELTA OPERAZIONE \n"); printf("\nPREMI 1:-----------INSERISCI PAROLA---------------------\n"); printf("PREMI 2:-----------VISUALIZZA LISTA-----------------\n"); printf("PREMI 3:----------VISUALIZZA VOCALI IN LISTA-----------\n"); printf("PREMI 4:----------------USCITA-----------------\n"); printf("\nScelta: "); scanf("%d",&scelta); if(scelta==1){ printf("Digita la parola da inserire: "); scanf("%s",word); el_parole=InserisciElementoInLista(el_parole,word); } //definizione delle possibili scelte if(scelta==2) VisualizzaLista(el_parole); if(scelta==3){ ContaNumeroVocaliInLista(word, &vocali); printf("Le vocali presenti in lista sono: %d ", vocali); } if(scelta==4) a=0; if(scelta!= 1 && scelta!= 2 && scelta!= 3 && scelta!=4) printf("\nScelta non valida\n\n"); } while(a!=0); return 0; }
mi potete dare una mano?

Rispondi quotando