Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include <iostream>
- using namespace std;
- #define MAX 100
- class Masina {
- protected:
- char *numar;
- char *marca;
- public:
- Masina(const char *numar = "", const char *marca = "");
- Masina(const Masina &m);
- virtual ~Masina();
- Masina& operator = (const Masina &m);
- void setNumar(const char *numar);
- char* getNumar();
- void setMarca(const char *marca);
- char* getMarca();
- friend istream& operator>>(istream &in, Masina& m);
- friend ostream& operator<<(ostream &out, const Masina& m);
- };
- Masina::Masina(const char *numar, const char *marca ) {
- this->numar = new char[strlen(numar)+1];
- strcpy(this->numar, numar);
- this->marca = new char[strlen(marca)+1];
- strcpy(this->marca, marca);
- }
- Masina::Masina(const Masina &m) {
- this->numar = new char[strlen(m.numar)+1];
- strcpy(this->numar, m.numar);
- this->marca = new char[strlen(m.marca)+1];
- strcpy(this->marca, m.marca);
- }
- Masina::~Masina() {
- delete []numar;
- delete []marca;
- }
- Masina& Masina::operator = (const Masina &m) {
- if(this != &m) {
- setNumar(m.numar);
- setMarca(m.marca);
- }
- return *this;
- }
- void Masina::setNumar(const char *numar) {
- if(strlen(this->numar)<strlen(numar)) {
- delete []this->numar;
- this->numar = new char[strlen(numar)+1];
- }
- strcpy(this->numar, numar);
- }
- char* Masina::getNumar() {
- return numar;
- }
- void Masina::setMarca(const char *marca) {
- if(strlen(this->marca)<strlen(marca)) {
- delete []this->marca;
- this->marca = new char[strlen(marca)+1];
- }
- strcpy(this->marca, marca);
- }
- char* Masina::getMarca() {
- return marca;
- }
- istream& operator>>(istream &in, Masina& m) {
- char tmp[MAX];
- cout<<"Numar: ";
- in>>tmp;
- m.setNumar(tmp);
- cout<<"Marca: ";
- in>>tmp;
- m.setMarca(tmp);
- return in;
- }
- ostream& operator<<(ostream &out, const Masina& m) {
- out<<"Numar: "<<m.numar<<endl;
- out<<"Marca: "<<m.marca<<endl;
- return out;
- }
- class MasinaElectrica:public Masina {
- protected:
- int autonomie;
- public:
- MasinaElectrica(const char *numar = "", const char *marca = "", int autonomie =0);
- friend istream& operator>>(istream &in, MasinaElectrica& m);
- friend ostream& operator<<(ostream &out, const MasinaElectrica& m);
- };
- MasinaElectrica::MasinaElectrica(const char *numar, const char *marca, int autonomie):
- Masina(numar,marca) {
- this->autonomie=autonomie;
- }
- istream& operator>>(istream &in, MasinaElectrica& m) {
- cout<<"Date pentru masina electrica:"<<endl;
- in>>(Masina&)m;
- cout<<"Autonomie:";
- in>>m.autonomie;
- return in;
- }
- ostream& operator<<(ostream &out, const MasinaElectrica& m) {
- out<<"Masina electrica"<<endl;
- out<<"-------------------------"<<endl;
- out<<"Numar: "<<m.numar<<endl;
- out<<"Marca: "<<m.marca<<endl;
- out<<"Autonomie: "<<m.autonomie<<endl;
- out<<"-------------------------"<<endl;
- return out;
- }
- /*********************************************************/
- class MasinaCuCombustie:public Masina {
- protected:
- char *tipCarburant;
- float consum;
- public:
- MasinaCuCombustie(const char *numar = "", const char *marca = "",
- const char *tipCarburant="benzina", float consum =0);
- MasinaCuCombustie(const MasinaCuCombustie &m);
- virtual ~MasinaCuCombustie();
- void setTipCarburant(const char *tipCarburant);
- void setConsum(float consum);
- MasinaCuCombustie& operator= (const MasinaCuCombustie &m);
- friend istream& operator>>(istream &in, MasinaCuCombustie& m);
- friend ostream& operator<<(ostream &out, const MasinaCuCombustie& m);
- };
- MasinaCuCombustie::MasinaCuCombustie(const char *numar, const char *marca,
- const char *tipCarburant, float consum):
- Masina(numar, marca) {
- this->tipCarburant = new char[strlen(tipCarburant)+1];
- strcpy(this->tipCarburant, tipCarburant);
- this->consum= consum;
- }
- MasinaCuCombustie::MasinaCuCombustie(const MasinaCuCombustie &m):Masina(m) {
- this->tipCarburant = new char[strlen(m.tipCarburant)+1];
- strcpy(this->tipCarburant, m.tipCarburant);
- this->consum= m.consum;
- }
- MasinaCuCombustie::~MasinaCuCombustie() {
- delete []tipCarburant;
- }
- void MasinaCuCombustie::setTipCarburant(const char *tipCarburant) {
- if(strlen(this->tipCarburant)<strlen(tipCarburant)) {
- delete []this->tipCarburant;
- this->tipCarburant = new char[strlen(tipCarburant)+1];
- }
- }
- void MasinaCuCombustie::setConsum(float consum) {
- this->consum = consum;
- }
- MasinaCuCombustie& MasinaCuCombustie::operator= (const MasinaCuCombustie &m) {
- if(this != &m) {
- (Masina)operator= (m);
- setTipCarburant(m.tipCarburant);
- setConsum(m.consum);
- }
- return *this;
- }
- istream& operator>>(istream &in, MasinaCuCombustie& m) {
- cout<<"Dati datele pentru masina cu carburant:"<<endl;
- in>>(Masina &)m;
- char tmp[MAX];
- cout<<"Carburant:";
- in>>tmp;
- m.setTipCarburant(tmp);
- cout<<"Consum:";
- in>>m.consum;
- ///return in;
- }
- ostream& operator<<(ostream &out, const MasinaCuCombustie& m) {
- out<<"Masina cu combustie"<<endl;
- out<<"-------------------------"<<endl;
- out<<"Numar: "<<m.numar<<endl;
- out<<"Marca: "<<m.marca<<endl;
- out<<"Carburant: "<<m.tipCarburant<<endl;
- out<<"Consum: "<<m.consum<<endl;
- out<<"-------------------------"<<endl;
- return out;
- }
- int main() {
- MasinaCuCombustie m;
- cin>>m;
- cout<<m;
- Masina m1("3DJ8233", "Dacia");
- Masina m2;
- m2= m1;
- m2.setNumar ("3DJ8234") ;
- cout<<m1<<m2;
- MasinaElectrica me("71-DJ-ABC", "Toyota", 100);
- cout<<me;
- MasinaCuCombustie mc("71-DJ-ABC", "Logan", "benzina", 7.5);
- cout<<mc;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement