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
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 rendo conto che la funzione ContaNumeroVocaliInLista non passa la lista, passa solo l'array di char..ma non so passare la lista..
mi potete dare una mano?