Advertisement
mbojmaliev

Имоти

May 9th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. class Nedviznost{
  7. protected:
  8.     char adresa[100];
  9.     char grad[30];
  10.     float kvadrat;
  11. public:
  12.     Nedviznost(char * adresa, char * grad, float kvadrat){
  13.         strcpy(this->adresa, adresa);
  14.         strcpy(this->grad, grad);
  15.         this->kvadrat = kvadrat;        
  16.     }
  17.    
  18.     friend ostream &operator <<(ostream &out, Nedviznost &n){
  19.         out<<"Adresa: "<<n.adresa<<endl;
  20.         out<<"Grad: "<<n.grad<<endl;
  21.         out<<n.kvadrat<<" kvadrati"<<endl;
  22.         out<<"Cena: "<<n.cena()<<endl;
  23.         return out;
  24.     }
  25.     bool operator <(Nedviznost &n){
  26.         if(this->cena() < n.cena())return true;
  27.         return false;
  28.     }
  29.     virtual float cena() = 0;
  30. };
  31.  
  32. class Kukja:public Nedviznost{
  33. private:
  34.     int katovi;
  35.     float kvadratura_kat;
  36.     bool potkrovje;
  37. public:
  38.     Kukja(char *adresa, char*grad, float kvadrat, int katovi, float kvadratura_kat, bool potkrovje):Nedviznost(adresa, grad,kvadrat){
  39.         this->katovi = katovi;
  40.         this->kvadratura_kat = kvadratura_kat;
  41.         this->potkrovje = potkrovje;
  42.     }
  43.     float cena(){
  44.         float nazad=0;
  45.         nazad+=(kvadrat-kvadratura_kat)*200;
  46.         nazad+=(kvadratura_kat*katovi)*700;
  47.         if(potkrovje)nazad+=kvadratura_kat*450;
  48.     return nazad;        
  49.     }
  50. };
  51. class Zgrada:public Nedviznost{
  52. private:
  53.     float kvadratura_stan;
  54.     int brojstanovi;
  55. public:
  56.     Zgrada(char *adresa, char*grad, float kvadrat, float kvadratura_stan, int brojstanovi):Nedviznost(adresa, grad,kvadrat){
  57.         this->kvadratura_stan = kvadratura_stan;
  58.         this->brojstanovi = brojstanovi;
  59.     }
  60.     float cena(){
  61.         float nazad=0;
  62.         nazad+=kvadratura_stan*800*brojstanovi;
  63.         nazad+=brojstanovi*500;
  64.         return nazad;
  65.     }
  66. };
  67. class Stovariste:public Nedviznost{
  68. private:
  69.     float kvadratura_pokrien;
  70.     bool kancelarija;
  71. public:
  72.     Stovariste(char *adresa, char*grad, float kvadrat, float kvadratura_pokrien, bool kancelarija):Nedviznost(adresa, grad,kvadrat){
  73.         this->kvadratura_pokrien = kvadratura_pokrien;
  74.         this->kancelarija = kancelarija;
  75.     }
  76.     float cena(){
  77.         float nazad=0;
  78.         nazad+=kvadratura_pokrien*250;
  79.         nazad+=(kvadrat-kvadratura_pokrien)*100;
  80.         if(kancelarija)nazad*=1.1;
  81.         return nazad;
  82.     }
  83. };
  84. Nedviznost * najskap_imot(Nedviznost **ned, int n){
  85.     int naj = 0;
  86.     for(int i=1; i<n; i++){
  87.         if(ned[naj]->cena() < ned[i]->cena())naj = i;
  88.     }
  89.    
  90.     return ned[naj];
  91. }
  92.  
  93. int main() {
  94.     cout<<"HEHEHE";
  95.     int n; // Broj na nedviznosti
  96.  
  97.     int tip_nedviznost; // Tip na nedviznost (1-kukja, 2-zgrada, 3-stovariste)
  98.  
  99.     cin >> n;
  100.  
  101.     Nedviznost **ned = new Nedviznost*[n];
  102.     char adresa[100];
  103.     char grad[30] ;
  104.     float kvadratura;
  105.     for(int i = 0; i < n; ++i) {
  106.         cin >> tip_nedviznost>> adresa >> grad >> kvadratura;
  107.         if(tip_nedviznost==1) {
  108.             int br_kat;
  109.             float kvadrat_kat;
  110.             bool potkrovje;
  111.             cin >> br_kat >> kvadrat_kat >> potkrovje;
  112.             ned[i] = new Kukja(adresa, grad, kvadratura, br_kat, kvadrat_kat, potkrovje);
  113.         }
  114.         else if(tip_nedviznost == 2) {
  115.             int br_stanovi;
  116.             float kvadrat_na_stan;
  117.             cin >> br_stanovi >> kvadrat_na_stan;
  118.  
  119.             ned[i] = new Zgrada(adresa, grad, kvadratura, br_stanovi, kvadrat_na_stan);
  120.         }
  121.         else if(tip_nedviznost == 3){
  122.             float kvadrati_pokrien_del;
  123.             bool kancelarija;
  124.             cin >>kvadrati_pokrien_del >> kancelarija;
  125.  
  126.             ned[i]= new Stovariste(adresa, grad, kvadratura, kvadrati_pokrien_del,kancelarija);
  127.         }
  128.     }
  129.  
  130.     cout<<"== IMOTI =="<<endl;
  131.     for (int i=0; i<n; i++){
  132.         cout<<*(ned[i])<<endl;
  133.     }
  134.  
  135.     cout << "=== NAJSKAP IMOT ===" << endl;
  136.     cout << najskap_imot(ned, n);
  137.  
  138.     return 0;
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement