fedee91ee
27-12-2011, 22:06
Salve ragazzi!
Avrei un problema con un programma che implementa una classe libro e costituisce poi una pila di libri. Il problema è: dopo aver costituito la classe, riesco a stampare a video il libro (comprensivo di codice -stringa statica-, titolo -allocato dinamicamente-, numero pagine, anno pubblicazione) mentre se voglio stampare la pila di libri, il programma stampa tutto bene tranne il titolo (stringa allocata dinamicamente) di ogni libro al posto del quale compaiono caratteri speciali. Non so se mi spiego, comunque ora posto una parte del codice.
Classe libro:
const int dim=50;
class Libro{
private:
char codice[dim];
char* titolo;
int num_pagine;
int anno_pubbl;
public:
Libro(char* c="", char* t="", int num_p=0, int anno_p=0);
Libro(const Libro &);
~Libro(){delete [] titolo;}
void set_titolo(char*);
char* get_titolo()const{return titolo;}
bool check_copyright(const Libro &);
friend ostream & operator <<(ostream&, Libro&);
friend istream & operator >>(istream&, Libro&);
};
Implementazione costruttore e operatore di flusso:
Libro::Libro(char* c, char* t, int num_p, int anno_p){
strcpy(codice, c);
titolo=new char[strlen(t)+1];
strcpy(titolo,t);
num_pagine=num_p;
anno_pubbl=anno_p;
}
ostream & operator <<(ostream& os, Libro& L){
os<<"\nCodice:"<<L.codice;
os<<"\nTitolo:"<<L.titolo;
os<<"\nNumero pagine:"<< L.num_pagine;
os<<"\nAnno pubblicazione:"<< L.anno_pubbl;
return os;
}
Pila:
typedef Libro E;
struct Record;
typedef Record* Pila;
struct Record{
E elem;
Pila next;
};
void start(Pila&);
void top(const Pila&, E&);
bool empty(const Pila&);
bool full(const Pila&);
void push(Pila&, const E);
void pop(Pila&, E&);
void stampa(const Pila&);
Stampa pila:
void stampa(const Pila& p){
Record * ptr;
ptr=p;
while(ptr)
{
cout << ptr->elem << endl;
ptr=ptr->next;
}
}
Non ho postato tutto il codice pensando di aver postato la parte utile, ma se c'e bisogno posso postarlo tutto! Vi ringrazio in anticipo!
ps. Siate clementi è da poco che ho cominciato con il c++ e anche con il forum!
Avrei un problema con un programma che implementa una classe libro e costituisce poi una pila di libri. Il problema è: dopo aver costituito la classe, riesco a stampare a video il libro (comprensivo di codice -stringa statica-, titolo -allocato dinamicamente-, numero pagine, anno pubblicazione) mentre se voglio stampare la pila di libri, il programma stampa tutto bene tranne il titolo (stringa allocata dinamicamente) di ogni libro al posto del quale compaiono caratteri speciali. Non so se mi spiego, comunque ora posto una parte del codice.
Classe libro:
const int dim=50;
class Libro{
private:
char codice[dim];
char* titolo;
int num_pagine;
int anno_pubbl;
public:
Libro(char* c="", char* t="", int num_p=0, int anno_p=0);
Libro(const Libro &);
~Libro(){delete [] titolo;}
void set_titolo(char*);
char* get_titolo()const{return titolo;}
bool check_copyright(const Libro &);
friend ostream & operator <<(ostream&, Libro&);
friend istream & operator >>(istream&, Libro&);
};
Implementazione costruttore e operatore di flusso:
Libro::Libro(char* c, char* t, int num_p, int anno_p){
strcpy(codice, c);
titolo=new char[strlen(t)+1];
strcpy(titolo,t);
num_pagine=num_p;
anno_pubbl=anno_p;
}
ostream & operator <<(ostream& os, Libro& L){
os<<"\nCodice:"<<L.codice;
os<<"\nTitolo:"<<L.titolo;
os<<"\nNumero pagine:"<< L.num_pagine;
os<<"\nAnno pubblicazione:"<< L.anno_pubbl;
return os;
}
Pila:
typedef Libro E;
struct Record;
typedef Record* Pila;
struct Record{
E elem;
Pila next;
};
void start(Pila&);
void top(const Pila&, E&);
bool empty(const Pila&);
bool full(const Pila&);
void push(Pila&, const E);
void pop(Pila&, E&);
void stampa(const Pila&);
Stampa pila:
void stampa(const Pila& p){
Record * ptr;
ptr=p;
while(ptr)
{
cout << ptr->elem << endl;
ptr=ptr->next;
}
}
Non ho postato tutto il codice pensando di aver postato la parte utile, ma se c'e bisogno posso postarlo tutto! Vi ringrazio in anticipo!
ps. Siate clementi è da poco che ho cominciato con il c++ e anche con il forum!