Advertisement
madalinaradu

POO masina

May 27th, 2019
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.62 KB | None | 0 0
  1. #include <string.h>
  2. #include <iostream>
  3. using namespace std;
  4. #define MAX 100
  5.  
  6. class Masina {
  7.   protected:
  8.     char *numar;
  9.     char *marca;
  10.   public:
  11.     Masina(const char *numar = "",  const char *marca = "");
  12.     Masina(const Masina &m);
  13.     virtual ~Masina();
  14.     Masina& operator = (const Masina &m);
  15.     void setNumar(const char *numar);
  16.     char* getNumar();
  17.     void setMarca(const char *marca);
  18.     char* getMarca();
  19.     friend istream& operator>>(istream &in, Masina& m);
  20.     friend ostream& operator<<(ostream &out, const Masina& m);
  21. };
  22.  
  23. Masina::Masina(const char *numar,  const char *marca ) {
  24.   this->numar = new char[strlen(numar)+1];
  25.   strcpy(this->numar, numar);
  26.   this->marca = new char[strlen(marca)+1];
  27.   strcpy(this->marca, marca);
  28. }
  29.  
  30. Masina::Masina(const Masina &m) {
  31.   this->numar = new char[strlen(m.numar)+1];
  32.   strcpy(this->numar, m.numar);
  33.   this->marca = new char[strlen(m.marca)+1];
  34.   strcpy(this->marca, m.marca);
  35. }
  36.  
  37. Masina::~Masina() {
  38.   delete []numar;
  39.   delete []marca;
  40. }
  41.  
  42. Masina& Masina::operator = (const Masina &m) {
  43.   if(this != &m) {
  44.     setNumar(m.numar);
  45.     setMarca(m.marca);
  46.   }
  47.   return *this;
  48. }
  49.  
  50. void Masina::setNumar(const char *numar) {
  51.   if(strlen(this->numar)<strlen(numar)) {
  52.     delete []this->numar;
  53.     this->numar = new char[strlen(numar)+1];
  54.   }
  55.   strcpy(this->numar, numar);
  56. }
  57. char* Masina::getNumar() {
  58.   return numar;
  59. }
  60. void Masina::setMarca(const char *marca) {
  61.   if(strlen(this->marca)<strlen(marca)) {
  62.     delete []this->marca;
  63.     this->marca = new char[strlen(marca)+1];
  64.   }
  65.   strcpy(this->marca, marca);
  66. }
  67. char* Masina::getMarca() {
  68.   return marca;
  69. }
  70.  
  71. istream& operator>>(istream &in, Masina& m) {
  72.   char tmp[MAX];
  73.   cout<<"Numar: ";
  74.   in>>tmp;
  75.   m.setNumar(tmp);
  76.   cout<<"Marca: ";
  77.   in>>tmp;
  78.   m.setMarca(tmp);
  79.   return in;
  80. }
  81. ostream& operator<<(ostream &out, const Masina& m) {
  82.   out<<"Numar: "<<m.numar<<endl;
  83.   out<<"Marca: "<<m.marca<<endl;
  84.   return out;
  85. }
  86.  
  87.  
  88. class MasinaElectrica:public Masina {
  89.   protected:
  90.     int autonomie;
  91.   public:
  92.     MasinaElectrica(const char *numar = "",  const char *marca = "", int autonomie =0);
  93.     friend istream& operator>>(istream &in, MasinaElectrica& m);
  94.     friend ostream& operator<<(ostream &out, const MasinaElectrica& m);
  95. };
  96.  
  97. MasinaElectrica::MasinaElectrica(const char *numar,  const char *marca, int autonomie):
  98.   Masina(numar,marca) {
  99.   this->autonomie=autonomie;
  100. }
  101.  
  102. istream& operator>>(istream &in, MasinaElectrica& m) {
  103.   cout<<"Date pentru masina electrica:"<<endl;
  104.   in>>(Masina&)m;
  105.   cout<<"Autonomie:";
  106.   in>>m.autonomie;
  107.   return in;
  108. }
  109. ostream& operator<<(ostream &out, const MasinaElectrica& m) {
  110.   out<<"Masina electrica"<<endl;
  111.   out<<"-------------------------"<<endl;
  112.   out<<"Numar: "<<m.numar<<endl;
  113.   out<<"Marca: "<<m.marca<<endl;
  114.   out<<"Autonomie: "<<m.autonomie<<endl;
  115.   out<<"-------------------------"<<endl;
  116.   return out;
  117. }
  118.  
  119. /*********************************************************/
  120. class MasinaCuCombustie:public Masina {
  121.   protected:
  122.     char *tipCarburant;
  123.     float consum;
  124.   public:
  125.     MasinaCuCombustie(const char *numar = "",  const char *marca = "",
  126.                       const char *tipCarburant="benzina", float consum =0);
  127.     MasinaCuCombustie(const MasinaCuCombustie &m);
  128.     virtual ~MasinaCuCombustie();
  129.     void setTipCarburant(const char *tipCarburant);
  130.     void setConsum(float consum);
  131.     MasinaCuCombustie& operator= (const MasinaCuCombustie &m);
  132.     friend istream& operator>>(istream &in, MasinaCuCombustie& m);
  133.     friend ostream& operator<<(ostream &out, const MasinaCuCombustie& m);
  134. };
  135.  
  136. MasinaCuCombustie::MasinaCuCombustie(const char *numar,  const char *marca,
  137.                                      const char *tipCarburant, float consum):
  138.   Masina(numar, marca) {
  139.   this->tipCarburant = new char[strlen(tipCarburant)+1];
  140.   strcpy(this->tipCarburant, tipCarburant);
  141.   this->consum= consum;
  142. }
  143. MasinaCuCombustie::MasinaCuCombustie(const MasinaCuCombustie &m):Masina(m) {
  144.   this->tipCarburant = new char[strlen(m.tipCarburant)+1];
  145.   strcpy(this->tipCarburant, m.tipCarburant);
  146.   this->consum= m.consum;
  147. }
  148. MasinaCuCombustie::~MasinaCuCombustie() {
  149.   delete []tipCarburant;
  150. }
  151.  
  152. void MasinaCuCombustie::setTipCarburant(const char *tipCarburant) {
  153.   if(strlen(this->tipCarburant)<strlen(tipCarburant)) {
  154.     delete []this->tipCarburant;
  155.     this->tipCarburant = new char[strlen(tipCarburant)+1];
  156.   }
  157. }
  158. void MasinaCuCombustie::setConsum(float consum) {
  159.   this->consum = consum;
  160. }
  161. MasinaCuCombustie& MasinaCuCombustie::operator= (const MasinaCuCombustie &m) {
  162.   if(this != &m) {
  163.     (Masina)operator= (m);
  164.     setTipCarburant(m.tipCarburant);
  165.     setConsum(m.consum);
  166.   }
  167.   return *this;
  168. }
  169. istream& operator>>(istream &in, MasinaCuCombustie& m) {
  170.   cout<<"Dati datele pentru masina cu carburant:"<<endl;
  171.   in>>(Masina &)m;
  172.   char tmp[MAX];
  173.   cout<<"Carburant:";
  174.   in>>tmp;
  175.   m.setTipCarburant(tmp);
  176.   cout<<"Consum:";
  177.   in>>m.consum;
  178. ///return in;
  179. }
  180.  
  181. ostream& operator<<(ostream &out, const MasinaCuCombustie& m) {
  182.   out<<"Masina cu combustie"<<endl;
  183.   out<<"-------------------------"<<endl;
  184.   out<<"Numar: "<<m.numar<<endl;
  185.   out<<"Marca: "<<m.marca<<endl;
  186.   out<<"Carburant: "<<m.tipCarburant<<endl;
  187.   out<<"Consum: "<<m.consum<<endl;
  188.   out<<"-------------------------"<<endl;
  189.   return out;
  190. }
  191.  
  192. int main() {
  193.   MasinaCuCombustie m;
  194.   cin>>m;
  195.   cout<<m;
  196.   Masina m1("3DJ8233", "Dacia");
  197.   Masina m2;
  198.   m2= m1;
  199.   m2.setNumar ("3DJ8234") ;
  200.   cout<<m1<<m2;
  201.   MasinaElectrica me("71-DJ-ABC", "Toyota", 100);
  202.  
  203.   cout<<me;
  204.   MasinaCuCombustie mc("71-DJ-ABC", "Logan", "benzina", 7.5);
  205.   cout<<mc;
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement