metalni

OOP Labs 6 Nedviznina

May 30th, 2020
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.61 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. class Nedviznina{
  6. protected:
  7.     char *adresa;
  8.     int kvadratura;
  9.     int cenaK;
  10. public:
  11.     Nedviznina(){}
  12.     Nedviznina(char *adresa, int kvadratura, int cenaK){
  13.         this->adresa = new char[strlen(adresa) + 1];
  14.         for(int i= 0 ; i<(strlen(adresa) + 1); i++){
  15.             this->adresa[i] = adresa[i];
  16.         }
  17.         this->kvadratura = kvadratura;
  18.         this->cenaK = cenaK;
  19.     }
  20.     Nedviznina(const Nedviznina &n){
  21.         this->adresa = new char[strlen(n.adresa) + 1];
  22.         for(int i = 0 ; i< (strlen(n.adresa) + 1) ; i++){
  23.             this->adresa[i] = n.adresa[i];
  24.         }
  25.         this->kvadratura = n.kvadratura;
  26.         this->cenaK = n.cenaK;
  27.     }
  28.     Nedviznina& operator=(const Nedviznina &n){
  29.         if(this == &n)
  30.         return *this;
  31.         this->adresa = new char[strlen(n.adresa) + 1];
  32.         delete [] adresa;
  33.         for(int i = 0 ; i< (strlen(n.adresa) + 1) ; i++){
  34.             this->adresa[i] = n.adresa[i];
  35.         }
  36.         this->kvadratura = n.kvadratura;
  37.         this->cenaK = n.cenaK;
  38.         return *this;
  39.     }
  40.     ~Nedviznina(){
  41.         delete [] adresa;
  42.     }
  43.     int cena(){
  44.         return(cenaK * kvadratura);
  45.     }
  46.     void pecati(){
  47.         cout<<"Adresa: "<<adresa<<", Kvadratura: "<<kvadratura<<", Cena po Kvadrat: "<<cenaK<<endl;
  48.     }
  49.     int danokNaImot(){
  50.         return (0.5 *cena());
  51.     }
  52.     friend istream & operator >> (istream &input,  Nedviznina &orig){
  53.             char temp[25];
  54.             input >> temp;
  55.             delete [] orig.adresa;
  56.             orig.adresa = new char[strlen(temp)+1];
  57.             strcpy(orig.adresa, temp);
  58.             input >> orig.kvadratura >> orig.cenaK;
  59.  
  60.             return input;
  61.         }
  62.     char* getAdresa(){
  63.         return adresa;
  64.     }
  65. };
  66.  
  67. class Vila: public Nedviznina{
  68. protected:
  69.     int luksuz;
  70. public:
  71.     Vila(){}
  72.     Vila(char *adresa, int kvadratura, int cenaK,int luksuz):Nedviznina(adresa,kvadratura,cenaK)
  73.     {
  74.         this->luksuz = luksuz;
  75.     }
  76.     friend istream& operator>>(istream &in, Vila &v){
  77.         return in>>v.luksuz;
  78.     }
  79.     ~Vila(){}
  80.     int danokNaImot(){
  81.         return (Nedviznina::danokNaImot()*luksuz);
  82.     }
  83.     void pecati(){
  84.         Nedviznina::pecati();
  85.         cout<<", Danok na luksuz: "<<luksuz<<endl;
  86.     }
  87.  
  88. };
  89. int main(){
  90.     Nedviznina n;
  91.     Vila v;
  92.     cin>>n;
  93.     cin>>v;
  94.     n.pecati();
  95.     cout<<"Danok za: "<<n.getAdresa()<<", e: "<<n.danokNaImot()<<endl;
  96.     v.pecati();
  97.     cout<<"Danok za: "<<v.getAdresa()<<", e: "<<v.danokNaImot()<<endl;
  98.     return 0;
  99. }
Add Comment
Please, Sign In to add comment