Salve , ho scritto questo codice
#include<iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;
#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;
cout<<"\nLista parole:\n\n";
while(q!=NULL){
cout<<q->info;
q=q->next;
}
cout<<"\n";
}
void ContaVocaliParola(char parola[], int *pvocali){
char c;
int count=0;
while((c= toupper(parola[count]))!= '\0') {
if (c== 'A' || c== 'E' || c== 'I' || c== 'O' || c== 'U' )
++ *pvocali;
count++;
}
}
void ContaVocaliLista(puntElenco L){
int i=0;
puntElenco q=L;
cout<<"le vocali sono:\n\n";
while(q!=NULL){
ContaVocaliParola(q->info, &i);
q=q->next;
}
cout<<"\n";
}
int main (){
puntElenco el_parole=NULL;
el_parole = NULL;
int scelta,a=1;
int vocali=0;
int max=0;
char word[MAX_DIM]={'\0'},lunga[MAX_DIM]={'\0'};
do{
//creazione MENU
cout<<"SCELTA OPERAZIONE \n";
cout<<"\nPREMI 1:-----------INSERISCI PAROLA---------------------\n";
cout<<"PREMI 2:-----------VISUALIZZA LISTA-----------------\n";
cout<<"PREMI 3:----------VISUALIZZA VOCALI IN LISTA-----------\n";
cout<<"PREMI 4:----------------USCITA-----------------\n";
cout<<"\nScelta: ";
cin>>scelta;
if(scelta==1){
cout<<"Digita la parola da inserire: ";
cin>>word;
el_parole=InserisciElementoInLista(el_parole,word);
}
//definizione delle possibili scelte
if(scelta==2) VisualizzaLista(el_parole);
if(scelta==3) ContaVocaliLista(el_parole);
if(scelta==4) a=0;
if(scelta!= 1 && scelta!= 2 && scelta!= 3 && scelta!=4) cout<<"\nScelta non valida\n\n";
} while(a!=0);
return 0;
}
in output funziona quasi tutto tranne la numero 3, ovvero inserisco tipo cane e come vocali mi restituisce i : e spazio bianco.Come mai?? Grazie