Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Aiuto struct in C

  1. #1

    Aiuto struct in C

    Ciao a tutti...avrei questo esercizio dove non so svolgere 2 punti...
    La traccia è: Si vuole simulare la gestione di una biblioteca. Si suppone di avere un archivio di massimo 20 libri identificati da titolo,nome dell'auotre o autori(max 5), da un codice e da un prezzo di prestito. Un libro può essere disponibile o meno nell'archivio.

    Fin qui tutto ok... ho creato una struct con i vari campi e anche un campo che funge da status che sta ad indicare se il libro è disponibile (1) o meno (0)...
    codice:
    struct libro{
            char titolo[30];
            char nome_autori[20];
            int prezzo_di_prestito;
            int status;   /* status è un campo di array che indica se il libro è presente (1) oppure è in prestito (0)*/
            int codice_identificativo;
            };
            typedef struct libro Libro;
    
    
    int main ()
       
     {
    int var;  /*Questa variabile sarà utilizzata nella switch per decidere che cosa fare*/
    
    Libro libreria[20] = {{"Il signore degli anelli","xxx",5,1,1},
                             {"Harry Potter","yyyy",7,1,2},
                             {"La bibbia","zzzz",8,0,3},
                             {"Piccole donne","gggg",6,0,4},
                             {"Guarnizione","sss",1,0,5},
                             {"Il nome della rosa","sss",10,1,6},
                             {"Via col vento","rrrrr",3,1,7},
                             {"Odissea","lllldd",40,1,8},
                             {"Cuore","ddsds",12,1,9},
                             {"Malavoglia","wewe",4,0,10},
                             {"Siddharta","eee",2,1,11},
                             {"Lolita","ioio",12,0,12},
                             {"Amabili resti","eeewew",35,1,13},
                             {"Sulla strada","sss",1,1,14},
                             {"Possession","asas",25,1,15},
                             {"Germinale","gigi",10,0,16},
                             {"Il piccolo principe","ddd",24,1,17},
                             {"Un uomo","xdxd",14,1,18},
                             {"Amleto","mkmkmk",23,0,19},
                            };
    A questo punto devo permettere all'utente di restituire un libro tramite il codice e di cercare nell'archivio il libro più costoso...
    per quanto riguarda il primo punto non ho prp idea di come fare anke perchè sono alle prime armi con il C mentre per il secondo punto voglio applicare un approccio ricorsivo che consente di ricercare il prezzo massimo nell'array prezzo:
    codice:
    int max_ind(char a [], int n)
    {
        int i,i_max;
        i_max=0;
        for (i=0; i<n; i++)
            if (a[i]> a[i_max])
            i_max=i;
        return i_max;
    }
    Cosa devo passargli in input a questa function? Grazie a tutti per l'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    Appunto che sei alle prime armi perchè complicarsi la vita quando è possibile farne due versione iterativi con un for e un while semplici semplici?

    Credo siano di facile intuizione e modificabili se ci vuoi aggiungere qualcosa o riscriverli in altra maniera.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    struct libro{
    char titolo[30];
    char nome_autori[20];
    int prezzo_di_prestito;
    int status; /* status è un campo di array che indica se il libro è presente (1) oppure è in prestito (0)*/
    int codice_identificativo;
    };
    typedef struct libro Libro;
    
    
    int main ()
    {
        short int i, trovato=0, codice, max;
    
        Libro libreria[20] =
        {
            {"Il signore degli anelli","xxx",5,1,1},
            {"Harry Potter","yyyy",7,1,2},
            {"La bibbia","zzzz",8,0,3},
            {"Piccole donne","gggg",6,0,4},
            {"Guarnizione","sss",1,0,5},
            {"Il nome della rosa","sss",10,1,6},
            {"Via col vento","rrrrr",3,1,7},
            {"Odissea","lllldd",40,1,8},
            {"Cuore","ddsds",12,1,9},
            {"Malavoglia","wewe",4,0,10},
            {"Siddharta","eee",2,1,11},
            {"Lolita","ioio",12,0,12},
            {"Amabili resti","eeewew",35,1,13},
            {"Sulla strada","sss",1,1,14},
            {"Possession","asas",25,1,15},
            {"Germinale","gigi",10,0,16},
            {"Il piccolo principe","ddd",24,1,17},
            {"Un uomo","xdxd",14,1,18},
            {"Amleto","mkmkmk",23,0,19}
        };
    
        printf("Inserisci il codice = ");
        scanf("%hd", &codice);
        i=0;
        while(trovato != 1 && i<20)
        {
            if(codice == libreria[i].codice_identificativo)
            {
                printf("%s", libreria[i].titolo);
                trovato = 1;
            }
            i++;
        }
    
        max = 0;
        for(i=1;i<20;i++)
        {
            if(libreria[i].prezzo_di_prestito > libreria[max].prezzo_di_prestito)
            {
                max = i;
            }
        }
        printf("\n\nIl libro col prezzo massimo e' %s", libreria[max].titolo);
    
        return 0;
    }

  3. #3

    Moderazione

    Benvenuto sul forum! Ti ricordo che il codice va specificato tra tag [CODE] ... [/CODE], altrimenti perde l'indentazione.

    Ora correggo io, in futuro imposta correttamente la discussione fin da subito.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Ciao grazie mille dell'aiuto... il prof però mi ha chiesto esplicitamente di utilizzare un approccio ricorsivo.. per questo motivo credo di dover utilizzare la function che ho impostato nella traccia e che non so applicare a questo problema mi aiuti? graziee

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 © 2025 vBulletin Solutions, Inc. All rights reserved.