salve a tutti mi sono appena registrato al forum e voglio subito sottoporvi il problema che mi ha fatto perdere mezza mattinata...
O creato questo semplice programma che implementa la classe libro, ma durante l'esecuzione dopo aver acquisito i primi due campi stringa si interrompe.
penso sia un problema relativo alle stringhe stesse anche perchè hop provato a farlo partire inserendo solo le variabili int e float e non dava alcun problema...vi posto di seguito i tre file su cui si sviluppa...
//libro.h
#ifndef _Libro_
#define _Libro_
#include <cstdlib>
#include <iostream>
#include <string>
class libro
{
private:
char * titolo;
int numpagine;
float prezzo;
char * genere;
char * autori;
public:
libro();
int get_numpagine() {return numpagine;}
float get_prezzo() {return prezzo;}
char* get_titolo(){return titolo;}
char* get_genere() {return genere;}
char* get_autori() {return autori;}
void set_titolo(char* nome) {titolo=new char[strlen(nome)+1];
strcpy(titolo,nome);}
void set_autori(char* nome) {genere=new char[strlen(nome)+1];
strcpy(autori,nome);}
void set_genere(char* nome) {autori=new char[strlen(nome)+1];
strcpy(genere,nome);}
void set_numpagine(int num) {numpagine=num;}
void set_prezzo(float valore) {prezzo=valore;}
void stampa_scheda(libro l);
libro scrivi_scheda();
};
#endif
----------------------------------------------------------------------------------------------------------------------------
//libro.cpp
#include "libro.h"
using namespace std;
libro::libro()
{
numpagine=0;
prezzo=0;
}
libro libro:: scrivi_scheda()
{
libro l;
float valore;
int num;
char* nome;
cout<<"Inserimento dati libro \n";
cout<<"Inserisci titolo: ";
cin.getline(nome,50);
l.set_titolo(nome);
cout<<"\nInserisci autore: ";
cin.getline(nome,50);
l.set_autori(nome);
cout<<"\nInserisci il genere: ";
cin.getline(nome,50);
l.set_genere(nome);
cout<<"\nInserisci il numero di pagine: ";
cin>>num;
l.set_numpagine(num);
cout<<"\nInserisci il prezzo: ";
cin>>valore;
l.set_prezzo(valore);
return l;
}
void libro:: stampa_scheda(libro l)
{
cout<<"\n Titolo: "<<l.get_titolo();
cout<<"\n Autore: "<<l.get_autori();
cout<<"\n Genere: "<<l.get_genere();
cout<<"\n Numero pagine: "<<l.get_numpagine();
cout<<"\n Prezzo: "<<l.get_prezzo()<<"\n ";
}
----------------------------------------------------------------------------------------------------------------------------
//main.cpp
#include "libro.h"
using namespace std;
int main(int argc, char *argv[])
{
libro opera;
float np; //nuovo prezzo
opera=opera.scrivi_scheda();
system("PAUSE");
opera.stampa_scheda(opera);
cout<<"Modifica prezzo \n";
cout<<"Vecchio prezzo: "<<opera.get_prezzo()<<" \n";
cout<<"Nuovo prezzo: ";
cin>>np;
opera.set_prezzo(np);
system("PAUSE");
return EXIT_SUCCESS;
}
ringrazio anticipatamente tutti coloro che si prodigheranno nel darmi una mano...
O creato questo semplice programma che implementa la classe libro, ma durante l'esecuzione dopo aver acquisito i primi due campi stringa si interrompe.
penso sia un problema relativo alle stringhe stesse anche perchè hop provato a farlo partire inserendo solo le variabili int e float e non dava alcun problema...vi posto di seguito i tre file su cui si sviluppa...
//libro.h
#ifndef _Libro_
#define _Libro_
#include <cstdlib>
#include <iostream>
#include <string>
class libro
{
private:
char * titolo;
int numpagine;
float prezzo;
char * genere;
char * autori;
public:
libro();
int get_numpagine() {return numpagine;}
float get_prezzo() {return prezzo;}
char* get_titolo(){return titolo;}
char* get_genere() {return genere;}
char* get_autori() {return autori;}
void set_titolo(char* nome) {titolo=new char[strlen(nome)+1];
strcpy(titolo,nome);}
void set_autori(char* nome) {genere=new char[strlen(nome)+1];
strcpy(autori,nome);}
void set_genere(char* nome) {autori=new char[strlen(nome)+1];
strcpy(genere,nome);}
void set_numpagine(int num) {numpagine=num;}
void set_prezzo(float valore) {prezzo=valore;}
void stampa_scheda(libro l);
libro scrivi_scheda();
};
#endif
----------------------------------------------------------------------------------------------------------------------------
//libro.cpp
#include "libro.h"
using namespace std;
libro::libro()
{
numpagine=0;
prezzo=0;
}
libro libro:: scrivi_scheda()
{
libro l;
float valore;
int num;
char* nome;
cout<<"Inserimento dati libro \n";
cout<<"Inserisci titolo: ";
cin.getline(nome,50);
l.set_titolo(nome);
cout<<"\nInserisci autore: ";
cin.getline(nome,50);
l.set_autori(nome);
cout<<"\nInserisci il genere: ";
cin.getline(nome,50);
l.set_genere(nome);
cout<<"\nInserisci il numero di pagine: ";
cin>>num;
l.set_numpagine(num);
cout<<"\nInserisci il prezzo: ";
cin>>valore;
l.set_prezzo(valore);
return l;
}
void libro:: stampa_scheda(libro l)
{
cout<<"\n Titolo: "<<l.get_titolo();
cout<<"\n Autore: "<<l.get_autori();
cout<<"\n Genere: "<<l.get_genere();
cout<<"\n Numero pagine: "<<l.get_numpagine();
cout<<"\n Prezzo: "<<l.get_prezzo()<<"\n ";
}
----------------------------------------------------------------------------------------------------------------------------
//main.cpp
#include "libro.h"
using namespace std;
int main(int argc, char *argv[])
{
libro opera;
float np; //nuovo prezzo
opera=opera.scrivi_scheda();
system("PAUSE");
opera.stampa_scheda(opera);
cout<<"Modifica prezzo \n";
cout<<"Vecchio prezzo: "<<opera.get_prezzo()<<" \n";
cout<<"Nuovo prezzo: ";
cin>>np;
opera.set_prezzo(np);
system("PAUSE");
return EXIT_SUCCESS;
}
ringrazio anticipatamente tutti coloro che si prodigheranno nel darmi una mano...