Visualizzazione dei risultati da 1 a 3 su 3

Discussione: programma in C

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    3

    programma in C

    Buongiorno a tutti. Ho un problema per quanto riguarda il secondo punto del testo sottostante:
    Si vuole simulare la gestione di un dizionario della lingua italiana. Il dizionario è
    indicizzato tramite le lettere dell’alfabeto ed ogni parola contiene i sinonimi (massimo 5)
    e la sua spiegazione.
    Permettere all’utente di:
    • Inserire una parola, ricercarla nel dizionario e visualizzare il significato (usare
    la ricerca binaria)
    • Visualizzare la parola del dizionario contenente più vocali.
    Il primo punto l'ho fatto. Sul secondo ho qualche problema. potete aiutarmi ?
    Di seguito vi riporto il mio programma:

    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;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Problema? Quale?

    Aiutarti? Come?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    3
    Come ho già detto all'inizio il problema è il secondo punto. Non so come muovermi per far si che venga ricercata la parola con più vocali.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.