ho risolto il problema..
codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.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");
}
//analizza i caratteri della parola, incrementando il numero di vocali
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++;
}
}
//scorre la lista e definisce il numero vocali presenti in essa
void ContaNumeroVocaliInLista(puntElenco L){
int i=0;
puntElenco q=L;
while(q!=NULL){
ContaVocaliParola(q->info, &i);
q=q->next;
}
printf("Le vocali sono %d\n",i) ;
}
int main (){
puntElenco el_parole=NULL;
el_parole = NULL;
int scelta,a=1;
int vocali;
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) ContaNumeroVocaliLista(el_parole);
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;
}
non capisco perchè però dovete dubitare..volevo un input niente di più..
ora vorrei chiedervi un'altra cosa..in questa lista devo trovare la parola più lunga..immagino di dover scorrere la lista ancora una volta,ma come faccio a definire le condizioni per trovare la parola più lunga?