codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct parola{
char lettera;
char nome[50];
char significato[500];
} dizionario[100];
int ricercaBinariaNonRicorsiva(struct parola dizionario[], int n, char ricerca[]); // ricerca binaria
void inizializza_diz(struct parola dizionario[100]);
int main(int argc, char *argv[])
{
int i,j, scelta;
int k=0;
int n=20; //grandezza del dizionario
inizializza_diz(dizionario); //il dizionario viene riempito
printf("\t\tDizionario della lingua italiana\n");
for (;;)
{
printf("\n\tScegli l'opzione 1 o 2\n\n\t1: Ricerca il significato una parola\n\t2: Visualizzare la parola del dizionario contenente piu vocali\n\n\t0: ESCI\n\n");
scanf("%d", &scelta);
if (scelta==1)
{
fflush(stdin);
// Funzionalità di ricerca significato
printf("\t\tRICERCA SIGNIFICATO\n");
fflush(stdin);
printf("Inserisci la parola da ricercare\n");
gets(ricerca);
k= ricercaBinariaNonRicorsiva(dizionario, n, ricerca);
if(k!=-1)
{
printf("Lettera: %c\n",dizionario[k].lettera);
printf("\tNome: %s\n",dizionario[k].nome);
printf("\tSignificato: %s\n",dizionario[k].significato);
}
else
printf("Parola non presente nel dizionario.\n\n");
}
else if (scelta==2) // Funzionalità di ricerca della parola da visualizzare contenente più vocali
for (i=0; i<=n; i++)
{ for( )
else if (scelta==0)
{
return 0;
}
else //condizione di errore
{
printf("Scelta non corretta.\n");
}
}
system("PAUSE");
return 0;
}
void inizializza_diz(struct parola dizionario[100]){
//Riempie il dizionario
dizionario[0].lettera='a';
strcpy(dizionario[0].nome,"albero");
strcpy(dizionario[0].significato,"Pianta perenne dotata di fusto");
dizionario[1].lettera='b';
strcpy(dizionario[1].nome,"biro");
strcpy(dizionario[1].significato,"Penna a sfera");
dizionario[2].lettera='c';
strcpy(dizionario[2].nome,"canto");
strcpy(dizionario[2].significato,"Emissione di suoni modulati.");
dizionario[3].lettera='c';
strcpy(dizionario[3].nome,"casa");
strcpy(dizionario[3].significato,"Struttura utilizzata dall'uomo per ripararsi dagli agenti atmosferici.");
dizionario[4].lettera='c';
strcpy(dizionario[4].nome,"cetra");
strcpy(dizionario[4].significato,"Strumento musicale appartenente alla famiglia dei cordofoni.");
dizionario[5].lettera='c';
strcpy(dizionario[5].nome,"conto");
strcpy(dizionario[5].significato,"Insieme di scritture relative ad un dato oggetto di cui si mette in evidenza la variabile e commensurabile grandezza");
dizionario[6].lettera='c';
strcpy(dizionario[6].nome,"cuccia");
strcpy(dizionario[6].significato,"Giaciglio del cane.");
dizionario[7].lettera='c';
strcpy(dizionario[7].nome,"culla");
strcpy(dizionario[7].significato,"Mobile in cui vengono tenuti i neonati");
dizionario[8].lettera='h';
strcpy(dizionario[8].nome,"hotel");
strcpy(dizionario[8].significato,"Impresa ricettiva che fornisce un alloggio previo pagamento, utilizzato solitamente per soggiorni di breve durata e specialmente dai turisti.");
dizionario[9].lettera='j';
strcpy(dizionario[9].nome,"jettatore");
strcpy(dizionario[9].significato,"nasce quasi per scherno e per gioco, ma spesso la situazione degenera e la vittima di queste prese in giro può trovare serie difficoltà di integrazione, al punto di venire isolato - o di isolarsi volontariamente - dalla propria comunità, fino ad arrivare a gesti estremi, come il suicidio oppure la vendetta personale.");
dizionario[10].lettera='k';
strcpy(dizionario[10].nome,"killer");
strcpy(dizionario[10].significato,"L'assassino e' una persona che commette un omicidio, ovvero uccide un'altra persona senza il concorso di cause di giustificazione");
dizionario[11].lettera='l';
strcpy(dizionario[11].nome,"lasagne ");
strcpy(dizionario[11].significato,"si indica generalmente una pasta all'uovo tagliata in grossi quadrati, o rettangoli, usati soprattutto per pasticci al forno");
dizionario[12].lettera='m';
strcpy(dizionario[12].nome,"mela");
strcpy(dizionario[12].significato,"La mela e' il frutto (più precisamente si tratta di un falso frutto a pomo) del melo.");
dizionario[13].lettera='m';
strcpy(dizionario[13].nome,"macchina");
strcpy(dizionario[13].significato,"insieme di componenti, di cui almeno uno mobile, collegati tra loro, dotati di azionatori, circuiti di comando, ecc... e connessi solidalmente per un'applicazione ben determinata, capace quindi di compiere lavoro con una forza di natura diversa da quella dell'uomo (ad eccezione delle macchine semplici).");
dizionario[14].lettera='m';
strcpy(dizionario[14].nome,"mano");
strcpy(dizionario[14].significato,"organo prensile che si trova all'estremità del braccio, collegato a questo tramite il polso");
dizionario[15].lettera='n';
strcpy(dizionario[15].nome,"nido");
strcpy(dizionario[15].significato,"luogo di rifugio costruito da molti animali per proteggere le proprie uova dai predatori.");
dizionario[16].lettera='n';
strcpy(dizionario[16].nome,"nave");
strcpy(dizionario[16].significato,"un mezzo di trasporto studiato per il trasporto su acqua di merci o persone");
dizionario[17].lettera='o';
strcpy(dizionario[17].nome,"oca");
strcpy(dizionario[17].significato,"nome italiano di un numero considerevole di uccelli, appartenenti alla famiglia Anatidae. Questa famiglia include anche i cigni, la maggior parte dei quali sono più grandi delle oche, e le anatre, piu' piccole.");
dizionario[18].lettera='p';
strcpy(dizionario[18].nome,"pane");
strcpy(dizionario[18].significato,"prodotto alimentare ottenuto dalla lievitazione e successiva cottura in forno di un impasto a base di farina di cereali e acqua, confezionato con diverse modalità, arricchito e caratterizzato sovente da ingredienti prettamente regionali.");
dizionario[19].lettera='v';
strcpy(dizionario[19].nome,"uva");
strcpy(dizionario[19].significato,"frutto della vite");
}
int ricercaBinariaNonRicorsiva(struct parola dizionario[], int n, char ricerca[])
{
int p,u,m;
p = 0;
u = n-1;
while(p<=u) {
m = (p+u)/2;
if (strcmp(dizionario[m].nome,ricerca)==0)
return m; // valore x trovato alla posizione m
if (strcmp(dizionario[m].nome,ricerca) < 0)
p = m+1;
else
u = m-1;
}
// se il programma arriva a questo punto vuol dire che
// il valore x non è presente in lista, ma se ci fosse
// dovrebbe trovarsi alla posizione u (nota che qui p==u)
return -1;
}