Visualizzazione dei risultati da 1 a 8 su 8

Visualizzazione discussione

  1. #1

    Gestione biblioteca in c mi da errori

    Si vuole simulare la gestione automatizzata di una biblioteca. Si suppone di avere un
    archivio di massimo 20 libri identificati da un titolo, nome dell’autore o autori (massimo
    5), da un codice identificativo e da un prezzo di prestito. Un libro può essere presente
    nell’archivio o in prestito.
    Permettere all’utente di:

    1. Inserire un nuovo libro nell'archivio se è possibile (automaticamente gli viene assegnato un codice)
    2. Richiedere un libro tramite il titolo (verificare se esso è presente e non è in prestito)
    3.
    Richiedere un libro tramite il codice (verificare se esso è presente e non è in prestito)
    4. Restituire un libro tramite il codice
    5. Cercare nell'archivio il libro più costoso( usando un approccio ricorsivo)

    Il codice C che ho sviluppato è il seguente:


    codice:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <time.h>
    
    
    /* Creazione di un array di struct libro contenente 5 campi*/
        struct libro{
            char titolo[30];
            char nome_autori[5][20];
            int codice_identificativo;
            int prezzo_di_prestito;
            int status;   /* Status indica se il libro è presente(1) oppure è in prestito(0)*/
            };
    typedef struct libro Libro;
    
    
    int main ()
        {
    
    
    int var;     /*Questa variabile sarà utilizzata nella switch per decidere che cosa fare...*/
    int i,max;   /* Variabili utilizzate per inserire un nuovo libro nell'archivio */
    int flag=2;
    char titolo_richiesto [30]; /* Le variabili flag e titolo_richiesto sono utilizzate per richiedere un libro tramite il codice */
    int cod_id;  /* Variabile utilizzata per richiedere un libro tramite il codice*/
    int id;      /* Variabile utilizzata per restituire un libro tramite codice*/
    int maxi;    /* Variabile utilizzata per cercare il libro più costoso */
    
    
    /* Inizializzazione della libreria */
    Libro libreria [] =
    {
            {"Il signore degli anelli","James Redfield","Silvestrone",5,1,1},
            {"Harry Potter","Paulo Coelho",7,1,2},
            {"La bibbia","Marco Bianchi",8,0,3},
            {"Piccole donne","Piero Mozzi",60,0,4},
            {"Guarnizione","Napoleton Hill",1,0,5},
            {"Il nome della rosa","Louise",10,1,6},
            {"Via col vento","Jerry Ford",3,1,7},
            {"Odissea","Rhonda Bryne","Galano","Loius Scott","Trent",40,1,8},
            {"Cuore","Fabio Marchesi",12,1,9},
            {"Malavoglia","Valeria Soglia",4,0,10},
            {"Siddharta","Still",2,1,11},
            {"Lolita","Moccia","Crail Wilcox",12,0,12},
            {"Amabili resti","Wagner","Pone Raffy",35,1,13},
            {"Sulla strada","Boldi",1,1,14},
            {"Possession","Esposito Faby",25,1,15},
            {"Germinale","Fabio Beatrice",10,0,16},
            {"Il piccolo principe","Siani",24,1,17},
            {"Un uomo","Finucci Genny",14,1,18},
            {"Amleto","Ohls","Ylenia Star",23,0,19}
                            };
    
    
        /* Inizializzazione biblioteca  */
     do
     {
        printf("* * * * * * * * * * * * * * * * * * * * * * *\nBenvenuto nel programma di gestione biblioteca\n* * * * * * * * * * * * * * * * * * * * * * *\n");
        printf("Premere:\n       1. Per inserire un nuovo libro;\n       2. Per richiedere libro tramite titolo;\n       3. Per richiedere un libro tramite codice;\n       4. Per restituire un libro;\n       5. Per cercare libro piu costoso;\n       0. Per uscire.\n");
    
    
        scanf("%d",&var);     /*Viene inserito nella variabile var il numero inserito dall'utente e di conseguenza inserito nel ciclo Switch*/
      switch (var)  /* Creo uno switch con 5 case, uno per ogni possibile scelta */
      {
    
    
        case 1 :  /* Se l'utente preme tasto 1 si attiva questo case per inserire un nuovo libro nell'archivio */
    
    
        i=0;
        max=0;
            for(i=0;i<30;i++)
            {
            if(libreria[i].codice_identificativo>max){
        max=libreria[i].codice_identificativo;}
            }
        printf("Inserire titolo del libro:\n ");
        scanf("%s",&libreria[max+1].titolo);
        printf("Inserire nome dell'autore:\n");
        scanf("%d",&libreria[max+1].nome_autori);
        printf("Inserire 1 se il libro e' disponibile oppure 0 se è in prestito:\n");
        scanf("%d",&libreria[max+1].status);
        libreria[max+1].codice_identificativo=max+1;
        printf("Grazie!! Il libro e' stato inserito nell'archivio correttamente\n");
        break;
    
    
        case 2 : /* Se l'utente preme il tasto 2 vuole richjedere un libro tramite il titolo*/
    
    
        i=0;
        printf("Inserire il titolo del libro da richiedere:\n");
        scanf("%s",&titolo_richiesto);
            while(flag!=0 && i<30){
            if(strcmp(titolo_richiesto , libreria[i].titolo)==0){
        flag=0;
            if(libreria[i].status==1){
        printf("\nIl libro e' presente nell'archivio ed e' disponibile.\n");
        libreria[i].status=0;
        printf("\nSuddetto libro le e' appena stato ceduto in prestito.\nArrivederci e Grazie!");}
            else{
        printf("\nIl libro e' presente nell'archivio ma attualmente e' in prestito\n");}
            }
            else{
        i=i+1;}}
            if(flag!=0){
        printf("\nIl libro non e' presente nell'archivio!!\n");} break;
    
    
        case 3 : /* Premendo il tasto 3 l'utente vuole richiedere un libro tramite il titolo*/
    
    
        i=0;
        printf("Inserire il codice identificativo del libro da richiedere: \n");
        scanf("%d",&cod_id);
            while(flag!=0 && i<30){
            if(cod_id==libreria[i].codice_identificativo){
        flag=0;
            if(libreria[i].status==1){
        printf("\nIl libro e' presente nell'archivio ed e' disponibile.\n");
        libreria[i].status==0;
        printf("\nSuddetto libro le e' appena stato ceduto in prestito: %s.\nArrivederci e Grazie!\n", libreria[i].titolo);}
            else{
        printf("\nIl libro e' presente nell'archivio ma attualmente e' in prestito\n");}
            }
            else{
        i=i+1;}}
            if(flag!=0){
        printf("\nL'archivio non dispone di alcun libro avente questo codice identificativo\nArrivederci e Grazie!\n");}
        break;
    
    
        case 4 :  /* Case costruito per restituire un libro tramite codice*/
    
    
        i=0;
        printf("Inserire il codice identificativo del libro da restituire: \n");
        scanf("%d",&id);
            while(flag!=0 && i<30){
            if(id==libreria[i].codice_identificativo){
        flag=0;
            if(libreria[i].status==1){
        printf("\nErrore: Il libro e' gia' disponibile.\nArrivederci e Grazie.\n");}
            else{
        libreria[i].status=1;
        printf("\nSuddetto libro e' appena stato restituito: %s\nLa ringraziamo per la serieta'. Arrivederci!\n",libreria[i].titolo);}
            }
            else{
        i=i+1;}}
            if(flag!=0){
        printf("\nL'archivio non dispone di alcun libro avente questo codice identificativo\nArrivederci e Grazie!");}
        break;
    
    
        case 5: /* Si vuole cercare il libro più costoso nell'archivio */
    
    
         maxi = 0;
        for(i=1;i<20;i++)
        {
            if(libreria[i].prezzo_di_prestito > libreria[maxi].prezzo_di_prestito)
            {
                maxi = i;
            }
        }
        printf("\n\nIl libro col prezzo massimo e': %s", libreria[maxi].titolo);
        return 0; break;
    
    
        case 0 :
    
    
            printf("Hai deciso di uscire dalla libreria!! Ciao!!\n"); break;
    
    
        default:printf("Inserimento Errato\nRiprovare: \n:");break; /*Se l'utente sbaglia ad inserire il numero*/
      } /* Fine switch */
     }  /* Fine do */
        while (var>5);
        system("Pause");
    }
    Il programma mi dà diversi errori... al punto 1 non mi fa inserire il libro nell'archivio e mi dà errore...
    anke il punto 2-3 non mi fa richiedere libro... cioè da risultati strani...Aiutatemi a correggere questo programma grazie a tutti...
    Ultima modifica di MItaly; 21-10-2013 a 14:48 Motivo: Aggiunti tag [CODE] ... [/CODE]

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.