Come da titolo, questo programma dovrebbe permettere l'inserimento di informazioni su dei testi, fa uso di un vettore di struct chiamato biblioteca. Ci sono innanzitutto due problemi: il ciclo while non funziona nella funzione caricamento dati, nel senso che quando l'utente inserisce come titolo "finito" dovrebbe terminare, mentre continua; inoltre se come titolo inserisco degli spazi, il programma va in crash: qualcuno ha qualche suggerimento? Grazie
#include <iostream>
using namespace std;
const int max_libri=50;
//definisco la struct che contiene i dati riguardanti il libro
struct libro
{
int collocazione;
float costo;
string autore;
string titolo;
};
//definisco un vettore di max_libri elementi di tipo libro
libro biblioteca[max_libri];
void caricamento_dati(libro biblioteca[], int max_num)
{
for(int i=0;i<max_num;i++)
{
cout<<"Titolo libro: ";
cin>>biblioteca[i].titolo;
cout<<"Collocazione(ovvero il numero di libro inserito): ";
cin>>biblioteca[i].collocazione;
cout<<"Autore libro: ";
cin>>biblioteca[i].autore;
cout<<"Costo libro: ";
cin>>biblioteca[i].costo;
}
};
void stampa_dati(libro biblioteca[], int max_num)
{
int i=0;
while(biblioteca[i].titolo!="finito")
{
cout<<"Libro "<<i+1 <<" : ";
cout<<endl;
cout<<"Titolo: ";
cout<<biblioteca[i].titolo;
cout<<endl;
cout<<"Autore: ";
cout<<biblioteca[i].autore;
cout<<endl;
cout<<"Costo: ";
cout<<biblioteca[i].costo;
cout<<endl;
cout<<endl;
i=i+1;
};
};
void titolo_autore_collocazione(libro biblioteca[], int max_num, string cercato)
{
for(int i=0; i<max_num; i++)
{
if(biblioteca[i].titolo==cercato)
{
cout<<"\n\n L'autore di "<<cercato<<" e': "<<biblioteca[i].autore<<endl;
cout<<"La sua collocazione e': "<<biblioteca[i].collocazione<<endl;
}
}
};
int main()
{
cout<<"Questo programma ti consente di inserire una lista di libri a tuo piacimento, per un massimo di 50 testi."<<"\n"
<<"Inserisci la parola finito come titolo quando hai terminato l'inserimento dei libri"
<<endl;
//caricamento informazioni sui libri
caricamento_dati(biblioteca, max_libri);
//stampa libri inseriti
cout<<"Hai inserito i seguenti libri: ";
stampa_dati(biblioteca, max_libri);
//DAL TITOLO ALLA COLLOCAZIONE E AUTORE
string cercato=" ";
cout<<"Vuoi sapere l'autore di un certo testo e la sua collocazione nella biblioteca?";
cout<<"\nInserisci titolo da cercare: "<<endl;
cin>>cercato;
titolo_autore_collocazione(biblioteca, max_libri, cercato);
}