rieccomi..
allora sono riuscita a creare un dizionario in questo modo,posto il codice
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;
}
in pratica ho creato un menu:
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..
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);
}
mi potete dare una mano?