Salve a tutti, volevo chiedervi cosa c' è che non va nel seguente codice in c++;
il programma è molto semplice, creare una classe "biblioteca", formata da un vettore di tipo "libro"(altra classe contenente le informazioni del libro, titolo, autore....)
mi da errore(exit 1, o qualcosa di simile), solo quando nel main inserisco una variabile di tipo "biblioteca"
dal main dovrei poter :
inserire nuovo libro
visualizzare libri di un autore
cercare un libro per autore e casa auditrice
visualizzare i libri di una casa editrice
visualizzare i libri di una fascia di prezzo
/*creare una classe bibblioteca UTILIZZANDO la classe libro
funzioni finali del programma:
inserire nuovo libro
visualizzare libri di un autore
cercare un libro per autore e casa auditrice
visualizzare i libri di una casa editrice
visualizzare i libri di una fascia di prezzo
*/
#include <iostream>
using namespace std;
const int dim=2;//numero libri
class libro{
string autore;
string titolo;
float prezzo;
string casa;//casa editrice
public:
libro();
libro(string a, string t, string c, float p);
void setautore(string a){autore=a;}
void settitolo(string t){titolo=t;}
void setcasa(string c){casa=c;}
void setprezzo(float p){prezzo=p;}
string getautore(){return autore;}
string gettitolo(){return titolo;}
string getcasa(){return casa;}
float getprezzo(){return prezzo;};
void stampa();
};
//--------------------------------------------------------
libro::libro(){
autore="non lo so";
titolo="non lo so";
casa="non lo so";
prezzo=0;
}
//---------------------------------------------------------
libro::libro(string a, string t, string c, float p){
autore=a;
titolo=t;
casa=c;
while(prezzo<0){
cout<<endl<<"valore non valido, reinserisci --> ";cin>>c;
prezzo=p;
}
}
//--------------------------------------------------------------
void libro::stampa(){
cout<<endl<<"titolo --> "<<titolo;
cout<<endl<<"autore --> "<<autore;
cout<<endl<<"casa editrice --> "<<casa;
cout<<endl<<"prezzo --> "<<prezzo;
}
//--------------------------------------------------------------
class biblioteca{
libro biblio[dim];
public:
biblioteca();
biblioteca(libro a[]);
void setbiblio(libro a[]){for(int i=0; i<dim; i++) biblio[i]=a[i];}
libro getbiblio(int b){return biblio[b];}
void ricerca(libro b[]);//ricerca per auore o casa auditrice
};
void biblioteca::ricerca(libro b[]){
string a;
int scelta, c=0;
cout<<endl<<" 1- cerca per autore"
<<endl<<" 2- cerca per casa editrice"
<<endl<<" scelta ---> ";cin>>scelta;
switch(scelta){
case 1:
c=0;
cout<<endl<<"inserisci il nome dell' autore --> ";cin>>a;
for(int i=0; i<dim; i++)
{
if(a==biblio[i].getautore())
{biblio[i].stampa();c++;}
}
while(c==0){cout<<endl<<"nessun risultato "<<endl; }
break;
case 2:
c=0;
cout<<endl<<"inserisci la casa editrice --> ";cin>>a;
for(int i=0; i<dim; i++)
{
if(a==biblio[i].getcasa())
{biblio[i].stampa();c++;}
} break;
while(c==0){cout<<endl<<"nessun risultato "<<endl;}
break;
default: cout<<endl<<"inserimento errato"<<endl;break;
}
}
libro ins();
int main(){
biblioteca elementi;//mi da errore
system("pause");
return 0;
}
libro ins(){//inserimento dati anche qui non so come fare(è giusto ?, come va utilizzato nel main?)
string t;
string a;
string c;
float p;
cout<<endl<<"inserisci il titolo --> ";cin>>t;
cout<<endl<<"inserisci l' autore --> ";cin>>a;
cout<<endl<<"inserisci la casa editrice --> ";cin>>c;
cout<<endl<<"inserisci il prezzo --> ";cin>>p;
libro dati(a, t, c, p);
return dati;
}
grazie