Libreria (Struct nella Classe)

di il
6 risposte

Libreria (Struct nella Classe)

Salve, ho problemi con questo programma, sapreste dirmi cosa ho sbagliato?
#include <iostream>
#include <string>

using namespace std;
// DICHIARAZIONE CLASSE
class Biblio
{
// DICHIARAZIONE STRUCT 
    struct Libro
    {
        string autore, titolo, casa_editrice;
        int piano, scaffale, prest;
        int anno_produzione; 

    } lib[10];

    public:
    Biblio (); // COSTRUTTORE
    void InserisciLibro (int n);
    void CercaLibro (int cont);
    void Prestito();
};

// COSTRUTTORE
Biblio::Biblio ()
{
    /*
    lib.piano=0;
    lib.scaffale=0;
    lib.anno_produzione=0;
    */
}
// METODO PER L'INSERIMENTO DEI LIBRI
void Biblio::InserisciLibro (int i)
{
    if (i<=10)
    {
        cout << "\n|nserisci titolo del libro e nome dell'autore: ";
        cin >> lib[i].titolo >> lib[i].autore;
        cout << "\nInserisci casa editrice e anno di produzione: ";
        cin >> lib[i].casa_editrice >> lib[i].anno_produzione;
        cout << "\nInserisci piano e scaffale: ";
        cin >> lib[i].piano >> lib[i].scaffale;
        }
    else
        cout << "Impossibile aggiungere il libro. Massima capacità raggiunta (max 10)";
}
// PER CERCARE UN LIBRO
void Biblio::CercaLibro(int cont)
{ string tit;
  int i,
  prest=0,n=0;
    cout<<"\ninserisci libro da cercare: ";
    cin>>tit;
    for(i=0;i<cont;i++){
      if(tit==lib[i].titolo){
            n++;
            cout<<"\nlibro trovato";
            cout<<"\nlibro nello scaffale: "<<lib[i].scaffale<<"piano: "<<lib[i].piano;
            cout<<"\ncasa editirce: "<<lib[i].casa_editrice<<"anno di produzione: "<<lib[i].anno_produzione<<endl;
            if(lib[i].prest==0)
            cout<<"Libro disponibile\n";
            else
            cout<<"\nLibro Prestato";
                             } // chiude if
                         }  //chiude for

          if(n==0)
          cout<<"\nLibro non trovato!\n";

}
// PRESTITO
void Biblio::Prestito(){
     string tit;
  int i ;
    cout<<"\ninserisci titolo del libro da prestare : ";
    cin>>tit;
    for(i=0;i<10;i++){
      if(tit==lib[i].titolo){
      lib[i].prest=1;
      }}}

int main ()
{
    Biblio Bl; // Bl E' L'OGGETTO DELLA CLASSE BIBLIO
    int scelta, cont=0;
cout << "Programma per la gestione di una biblioteca\n";
    do
    {
        cout << "\n1.Inserisci un nuovo libro";
        cout << "\n2.Cerca libro";
        cout << "\n3.Presta libro";
        cout << "\n0.Esci"<< endl;
        cout << "\n Fai una scelta: ";
        cin >> scelta;

        switch (scelta)
        {
            case 1:
                Bl.InserisciLibro (cont);
                cont ++;
                cout << "Libro inserito correttamente. Procedere con una nuova scelta";
            break;

            case 2:
                Bl.CercaLibro(cont);
            break;

            case 3:
                 Bl.Prestito();
            break;


        } //SWITCH
    }while (scelta!=0);
} // CHIUDE MAIN

6 Risposte

  • Re: Libreria (Struct nella Classe)

    Che problemi?
  • Re: Libreria (Struct nella Classe)

    Quando presto un libro e poi vado a cercarlo mi dice sia che il libro è disponibile e sia che è stato prestato
  • Re: Libreria (Struct nella Classe)

    A me non succede ...

    Dice "libro trovato" e poi "libro prestato"
  • Re: Libreria (Struct nella Classe)

    Si ma non dovrebbe uscire "libro trovato"! dovrebbe uscire solo "libro prestato".
  • Re: Libreria (Struct nella Classe)

    Intanto non dice

    "libro disponibile"

    ma "libro trovato" e poi mi sembra ovvio dato che hai scritto
    
    if(tit==lib[i].titolo){
                n++;
                cout<<"\nlibro trovato";
                cout<<"\nlibro nello scaffale: "<<lib[i].scaffale<<"piano: "<<lib[i].piano;
                cout<<"\ncasa editirce: "<<lib[i].casa_editrice<<"anno di produzione: "<<lib[i].anno_produzione<<endl;
    
                if(lib[i].prest==0)
                cout<<"Libro disponibile\n";
                else
                cout<<"\nLibro Prestato";
    
    che significa ... se il titolo è trovato scrivi "libro trovato" (quindi a prescindere) e dopo controlla se libro non prestato scrivi "libro disponibile" altrimenti "libro prestato".

    Quelle cout di "libro trovato", come vedi, vengono comunque eseguite prima del controllo del prestito quindi è ovvio ...
  • Re: Libreria (Struct nella Classe)

    Niente, non riesco. puoi per favore dirmi cosa modificare?
Devi accedere o registrarti per scrivere nel forum
6 risposte