Ciao ragazzi, stavo aiutando un collega per un suo progetto di programmazione 1 e abbiamo riscontrato un problema per quanto riguarda la gestione della selezione della minima parola ll' interno di un dizionario creato da noi vi inserisco il codice;
Main
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include "Header.h" //inclusione dell' Header//
struct parola { //dichiarazione della struct dizionario: formata da quattro elementi di tipo char
char lettera;
char nome [50];
char significato [500];
char sinonimo [5][20];
} dizionario [100];
int ricerca_parola (struct parola dizionario [], int n, char chiave[]);
void Ricerca_min(struct parola dizionario[], int n);
void Elimina_parola(struct parola dizionario[], int n, char chiave[]);
void inizializza (struct parola dizionario[100]);
int main(int argc, char *argv[]){
int opzione;
int k=0;
int n=21; //grandezza del dizionario
char chiave[20]; //chiave di ricerca binaria
inizializza(dizionario); //riempimento dizionario
while(opzione>=0 && opzione <=3)
{
printf ("Dizionario della Lingua Italiana\n\n");
printf ("inserisci un numero e premi invio:\n\n1) Ricerca una parola\n2) Elimina una parola\n3) Trova la parola piu' corta!\n0) Esci\n");
scanf("%d", &opzione);
if (opzione==1){
fflush(stdin);
//funzione ricerca significato parola
printf("\tRICERCA PAROLA\n\n");
fflush(stdin);
printf("Inserisci la parola: ");
scanf("%s", &chiave);
k=ricerca_parola (dizionario, n, chiave);
if (k!=-1)
{
printf("\nNome: %s\n",dizionario[k].nome);
printf("\nSignificato: %s\n",dizionario[k].significato);
printf("\nSinonimi: %s, %s, %s, %s, %s\n\n",dizionario[k].sinonimo[0],dizionario[k].sinonimo[1],dizionario[k].sinonimo[2],dizionario[k].sinonimo[3],dizionario[k].sinonimo[4]);
}
else
{
printf("\nParola non trovata!\n\n");
}
}
else if (opzione==3)
{
Ricerca_min(dizionario, n);
fflush(stdin);
}
else if(opzione ==2)
{
fflush(stdin);
printf("Inserisci la parola: ");
scanf("%s", &chiave);
Elimina_parola(dizionario,n,chiave);
}
else
break;
}
return 0;
}
Inizializza
void inizializza (struct parola dizionario[100]){
dizionario[0].lettera='a';
strcpy (dizionario[0].nome, "antico");
strcpy(dizionario[0].significato, "appartenente ad un'epoca remota");
strcpy (dizionario[0].sinonimo[0], "vecchio");
strcpy (dizionario[0].sinonimo[1], "preistorico");
strcpy (dizionario[0].sinonimo[2], "primitivo");
strcpy (dizionario[0].sinonimo[3], "remoto");
strcpy (dizionario[0].sinonimo[4], "arcaico");
dizionario[1].lettera='b';
strcpy (dizionario[1].nome, "bocciare");
strcpy(dizionario[1].significato, "Negare a uno studente l'ammissione alla classe successiva o un'esame");
strcpy (dizionario[1].sinonimo[0], "respingere");
strcpy (dizionario[1].sinonimo[1], "rifiutare");
strcpy (dizionario[1].sinonimo[2], "silurare");
strcpy (dizionario[1].sinonimo[3], "escludere");
strcpy (dizionario[1].sinonimo[4], "scartare");
dizionario[2].lettera='c';
strcpy (dizionario[2].nome, "complicato");
strcpy(dizionario[2].significato, "Intricato, complesso, di difficile soluzione");
strcpy (dizionario[2].sinonimo[0], "astruso");
strcpy (dizionario[2].sinonimo[1], "cabalistico");
strcpy (dizionario[2].sinonimo[2], "complesso");
strcpy (dizionario[2].sinonimo[3], "difficile");
strcpy (dizionario[2].sinonimo[4], "machiavellico");
dizionario[3].lettera='d';
strcpy (dizionario[3].nome, "duttile");
strcpy(dizionario[3].significato, "Che si modifica a seconda delle necessità e delle circostanze");
strcpy (dizionario[3].sinonimo[0], "agile");
strcpy (dizionario[3].sinonimo[1], "cedevole");
strcpy (dizionario[3].sinonimo[2], "malleabile");
strcpy (dizionario[3].sinonimo[3], "elastico");
strcpy (dizionario[3].sinonimo[4], "trattabile");
dizionario[4].lettera='e';
strcpy (dizionario[4].nome, "estroverso");
strcpy(dizionario[4].significato, "Tendenza a privilegiare il rapporto con il mondo esterno e la socializzazione");
strcpy (dizionario[4].sinonimo[0], "aperto");
strcpy (dizionario[4].sinonimo[1], "brillante");
strcpy (dizionario[4].sinonimo[2], "comunicativo");
strcpy (dizionario[4].sinonimo[3], "gioviale");
strcpy (dizionario[4].sinonimo[4], "socievole");
dizionario[5].lettera='f';
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");
strcpy (dizionario[5].sinonimo[0], "calcolo");
strcpy (dizionario[5].sinonimo[1], "conteggio");
strcpy (dizionario[5].sinonimo[2], "computo");
strcpy (dizionario[5].sinonimo[3], "dovuto");
strcpy (dizionario[5].sinonimo[4], "parcella");
dizionario[6].lettera='g';
strcpy(dizionario[6].nome,"giocare");
strcpy(dizionario[6].significato,"dedicarsi a qualche esercizio piacevole per divertimento o anche per guadagno");
strcpy (dizionario[6].sinonimo[0], "svagarsi");
strcpy (dizionario[6].sinonimo[1], "scherzare");
strcpy (dizionario[6].sinonimo[2], "giocherellare");
strcpy (dizionario[6].sinonimo[3], "baloccare");
strcpy (dizionario[6].sinonimo[4], "gareggiare");
dizionario[7].lettera='h';
strcpy(dizionario[7].nome,"hotel");
strcpy(dizionario[7].significato,"Impresa ricettiva che fornisce un alloggio previo pagamento, utilizzato solitamente per soggiorni di breve durata e specialmente dai turisti.");
strcpy (dizionario[7].sinonimo[0], "albergo");
strcpy (dizionario[7].sinonimo[1], "pensione");
strcpy (dizionario[7].sinonimo[2], "motel");
strcpy (dizionario[7].sinonimo[3], "BnB");
strcpy (dizionario[7].sinonimo[4], "casa vacanze");
dizionario[8].lettera='i';
strcpy(dizionario[8].nome,"incorniciare");
strcpy(dizionario[8].significato,"mettere in cornice");
strcpy (dizionario[8].sinonimo[0], "inquadrare");
strcpy (dizionario[8].sinonimo[1], "circondare");
strcpy (dizionario[8].sinonimo[2], "delimitare");
strcpy (dizionario[8].sinonimo[3], "contorinare");
strcpy (dizionario[8].sinonimo[4], "NULL");
dizionario[9].lettera='l';
strcpy(dizionario[9].nome,"lontano");
strcpy(dizionario[9].significato,"che si trova a grande distanza, che è separato da un lungo spazio");
strcpy (dizionario[9].sinonimo[0], "distante");
strcpy (dizionario[9].sinonimo[1], "staccato");
strcpy (dizionario[9].sinonimo[2], "separato");
strcpy (dizionario[9].sinonimo[3], "diviso");
strcpy (dizionario[9].sinonimo[4], "discosto");
dizionario[10].lettera='m';
strcpy(dizionario[10].nome,"maldestro");
strcpy(dizionario[10].significato,"inesperto; non abile");
strcpy (dizionario[10].sinonimo[0], "incapace");
strcpy (dizionario[10].sinonimo[1], "inesperto");
strcpy (dizionario[10].sinonimo[2], "inabile");
strcpy (dizionario[10].sinonimo[3], "goffo");
strcpy (dizionario[10].sinonimo[4], "sprovveduto");
dizionario[11].lettera='n';
strcpy(dizionario[11].nome,"nano");
strcpy(dizionario[11].significato,"che ha dimensioninotevolmente ridotte rispetto alla norma");
strcpy (dizionario[11].sinonimo[0], "piccolo");
strcpy (dizionario[11].sinonimo[1], "basso");
strcpy (dizionario[11].sinonimo[2], "bassissimo");
strcpy (dizionario[11].sinonimo[3], "di bassissima statura");
strcpy (dizionario[11].sinonimo[4], "minuscolo");
dizionario[12].lettera='o';
strcpy(dizionario[12].nome,"origliare");
strcpy(dizionario[12].significato,"ascoltare di nascosto");
strcpy (dizionario[12].sinonimo[0], "orecchiare");
strcpy (dizionario[12].sinonimo[1], "usciolare");
strcpy (dizionario[12].sinonimo[2], "spiare");
strcpy (dizionario[12].sinonimo[3], "NULL");
strcpy (dizionario[12].sinonimo[4], "NULL");
dizionario[13].lettera='p';
strcpy(dizionario[13].nome,"peso");
strcpy(dizionario[13].significato,"forza che un corpo esercita su ciò che losostiene per effetto della gravità terrestre");
strcpy (dizionario[13].sinonimo[0], "pesantezza");
strcpy (dizionario[13].sinonimo[1], "zavorra");
strcpy (dizionario[13].sinonimo[2], "carico");
strcpy (dizionario[13].sinonimo[3], "pesatura");
strcpy (dizionario[13].sinonimo[4], "pesante");
dizionario[14].lettera='q';
strcpy(dizionario[14].nome,"quadrare");
strcpy(dizionario[14].significato,"ridurre a forma quadrata");
strcpy (dizionario[14].sinonimo[0], "squadrare");
strcpy (dizionario[14].sinonimo[1], "rinquadrare");
strcpy (dizionario[14].sinonimo[2], "equilibrare");
strcpy (dizionario[14].sinonimo[3], "coincidere");
strcpy (dizionario[14].sinonimo[4], "combaciare");
dizionario[15].lettera='r';
strcpy(dizionario[15].nome,"razzare");
strcpy(dizionario[15].significato,"disegnare un tessuto, un foglio di carta o altro con figure simili a raggi");
strcpy (dizionario[15].sinonimo[0], "NESSUNO");
dizionario[16].lettera='s';
strcpy(dizionario[16].nome,"sottile");
strcpy(dizionario[16].significato,"che ha spessore o grossezza inferiore alla media");
strcpy (dizionario[16].sinonimo[0], "fine");
strcpy (dizionario[16].sinonimo[1], "magro");
strcpy (dizionario[16].sinonimo[2], "affilato");
strcpy (dizionario[16].sinonimo[3], "aguzzo");
strcpy (dizionario[16].sinonimo[4], "accurato");
dizionario[17].lettera='t';
strcpy(dizionario[17].nome,"trovare");
strcpy(dizionario[17].significato,"rinvenire una cosa che si cerca, che si desidera, di cui si vuole disporre");
strcpy (dizionario[17].sinonimo[0], "scorgere");
strcpy (dizionario[17].sinonimo[1], "vedere");
strcpy (dizionario[17].sinonimo[2], "rivelare");
strcpy (dizionario[17].sinonimo[3], "segnalare");
strcpy (dizionario[17].sinonimo[4], "rinvenire");
dizionario[18].lettera='u';
strcpy(dizionario[18].nome,"utile");
strcpy(dizionario[18].significato," che può essere usato, che può appagare un bisogno.");
strcpy (dizionario[18].sinonimo[0], "efficace");
strcpy (dizionario[18].sinonimo[1], "valido");
strcpy (dizionario[18].sinonimo[2], "vantaggioso");
strcpy (dizionario[18].sinonimo[3], "proficuo");
strcpy (dizionario[18].sinonimo[4], "giovevole");
dizionario[19].lettera='v';
strcpy(dizionario[19].nome,"vero");
strcpy(dizionario[19].significato,"che possiede realmente la qualità che gli si attribuisce");
strcpy (dizionario[19].sinonimo[0], "reale");
strcpy (dizionario[19].sinonimo[1], "effettivo");
strcpy (dizionario[19].sinonimo[2], "autentico");
strcpy (dizionario[19].sinonimo[3], "puro");
strcpy (dizionario[19].sinonimo[4], "originale");
dizionario[20].lettera='z';
strcpy(dizionario[20].nome,"zoa"); // è zona ma l ho accorciato a zoa per avere una parola corta
strcpy(dizionario[20].significato,"che possiede realmente la qualità che gli si attribuisce");
strcpy (dizionario[20].sinonimo[0], "fascia");
strcpy (dizionario[20].sinonimo[1], "porzione");
strcpy (dizionario[20].sinonimo[2], "territorio");
strcpy (dizionario[20].sinonimo[3], "area");
strcpy (dizionario[20].sinonimo[4], "striscia");
}
E ora la nota dolente in quanto non so che pesci prendere Ricerca Minimo
so che il codice è totalmente sbagliato ma non saprei rimediare
void Ricerca_min(struct parola dizionario[], int n )
{
int i,k;
char min="";
strcpy(dizionario[0].nome,min);
for(i=0;i<n;i++)
{
if( min>dizionario[i].nome)
{
strcpy(dizionario[i].nome,min);
}
}
printf("\nLa parola con meno caratteri e' %c",min);
printf("\n");
}