rieccomi..
allora sono riuscita a creare un dizionario in questo modo,posto il codice
in pratica ho creato un menu:codice:#include<stdio.h> #include<iostream> #include<stdlib.h> typedef struct{ char parola[20]; char significato[200]; } elem; struct dizionario; typedef dizionario *Pdizionario; typedef struct dizionario{ elem riga; Pdizionario next; } dizionario; Pdizionario inserisci(Pdizionario L, char*parola, char*significato){ Pdizionario q; q=(Pdizionario)malloc(sizeof(dizionario)); q->next=L; strcpy(q->riga.parola,parola); strcpy(q->riga.significato,significato); return(q); } void inserisciSignificato(Pdizionario L, char*parola,char*significato){ Pdizionario temp=L; bool trovato=0; while((temp!=NULL)&& (!trovato)){ if(strcmp(parola,temp->riga.parola)==0) trovato=true; else temp=temp->next; } strcpy(temp->riga.significato,significato); } bool cerca(Pdizionario L, char*parola){ Pdizionario temp=L; bool trovato=false; while((temp!=NULL)&& (!trovato)){ if(strcmp(parola,temp->riga.parola)==0) trovato=true; else temp=temp->next; } return(trovato); } void leggiSignificato (Pdizionario L, char*parola){ Pdizionario temp=L; bool trovato=false; while((temp!=NULL)&& (!trovato)){ if(strcmp(parola,temp->riga.parola)==0) trovato=true; else temp=temp->next; } printf("il significato relativo alla parola inserita e': %s\n",temp->riga.significato); system("PAUSE"); } void leggi(Pdizionario L, char*parola){ if(cerca(L,parola)==true) leggiSignificato(L,parola); else{ printf("ERRORE: il significato collegato alla parola inserita non esiste\n"); system("PAUSE"); } } void stampaDizionario(Pdizionario L){ Pdizionario q=L; while(q!=NULL){ printf("Parola: %s || ", q->riga.parola); printf("Significato: %s\n", q->riga.significato); q=q->next; } system("PAUSE"); } int main (){ char parola[20], significato[200]; int scelta,u=1, t=1; Pdizionario L; L = NULL; do{ //creazione MENU per utente printf("SCELTA OPERAZIONE \n"); printf("\nPREMI 1:-----------INSERISCI DATI---------------------\n"); printf("PREMI 2:-----------LEGGI DATI-----------------\n"); printf("PREMI 3:----------VISUALIZZA TUTTO IL DIZIONARIO-----------\n"); printf("PREMI 4:------------USCITA---------\n"); printf("\nScelta: "); scanf("%d",&scelta); if(scelta==1){ printf("Digita la parola da inserire: "); scanf("%s",parola); printf("inserisci il significato relativo alla parola inserita: \n"); scanf("%s", significato); if(t==1){ L=inserisci(L,parola,significato); t++; } else{ if(cerca(L,parola)==false) L=inserisci(L,parola,significato); else inserisciSignificato(L,parola,significato); } } else if(scelta==2){ printf("inserisci il nome della parola da cui vuoi leggere: \n"); scanf("%s", parola); leggi(L,parola); } else if(scelta==3) stampaDizionario(L); else u=0; }while(u!=0); system("PAUSE"); return 0; }
con la scelta uno posso inserire una parola e ad ogni parola inserita, inserisco anche il significato corrispondente, e qui ho un problema:se scrivo ad esempio casa e gli faccio corrispondere il significato:costruzione eretta dall'uomo
quando,in seguito,con la scelta 3 chiedo di visualizzare il dizionario lui mi da:
parola=casa,significato=costruzione
parola=eretta, significato=dall'uomo
se invece non metto gli spazi nel significato
cioè scrivo la parola casa e inserisco come significato corrispondente CostruzioneErettaDall'uomo e in seguito scelgo di visualizzare il dizionario non mi da problemi..
non so se sono stata chiara..
in più ho un altro problema io vorrei visualizzare il dizionario ordinato alfabeticamente..ho pensato a una funzione del genere,ma non so dove dovrei inserirla..
mi potete dare una mano?codice:Pdizionario InserisciElemento(Pdizionario L,char*parola){ puntElenco q=L, prec; int PosTrovata; if(q==NULL){ //lista vuota q=inserisci(L,parola); return(q); } if(strcmp(q->riga.parola,parola)>=0){ q=inserisci(L,parola); return q; } //scorro lista prec=q; while((q->next!=NULL) && (PosTrovata==0)){ if(strcmp(q->next->riga.parola,parola)<0){ prec=q; q=q->next; } else PosTrovata=1; } prec->next=inserisci(q->next,parola); return (L); }

Rispondi quotando