Advertisement
Guest User

33% nasleduvanje

a guest
Apr 26th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. class Nedviznost{
  8. protected:
  9.     char adresa[100];
  10.     char grad[30];
  11.     float kvzemjiste;
  12. public:
  13.     Nedviznost(){}
  14.     Nedviznost(char *a,char *g,float kz){
  15.         strcpy(adresa,a);
  16.         strcpy(grad,g);
  17.         kvzemjiste=kz;
  18.     }
  19.     ~Nedviznost(){}
  20.     // 5poeni
  21.     virtual float cena()=0; //mora
  22.     friend ostream& operator<<(ostream &out,Nedviznost &n){
  23.         out<<"Adresa: "<<n.adresa<<endl;
  24.         out<<"Grad: "<<n.grad<<endl;
  25.         out<<n.kvzemjiste<<" kvadrati"<<endl;
  26.         out<<"Cena: "<<n.cena()<<endl;
  27.         return out;
  28.     }
  29.     //10 poeni
  30.     bool operator<(Nedviznost &n){
  31.         if(cena()<n.cena())return true;
  32.         else return false;
  33.     }
  34.     //40 poeni
  35.     char *getAdresa(){
  36.         return adresa;
  37.     }
  38. };
  39.  
  40. class Kukja:public Nedviznost{
  41. private:
  42.     int brkatovi;
  43.     float kvedenkat;
  44.     bool potkrovje;
  45. public:
  46.     Kukja(char *adresa,char *grad,float kvzemjiste,int bk,float kek,bool p):Nedviznost(adresa,grad,kvzemjiste){
  47.         brkatovi=bk;
  48.         kvedenkat=kek;
  49.         potkrovje=p;
  50.     }
  51.    
  52.     /*Цената на куќата се добива како: kvadratkukja∗700+kvadratdvor∗200+kvadratpotkrovje∗450 .
  53.         Секој кат од куќата е
  54.         со иста квадратура. Површината на дворот е површина на земјиштето минус површината на
  55.         еден кат. */
  56.     float cena(){
  57.         if(potkrovje){
  58.             return kvedenkat*700+((kvzemjiste-kvedenkat)*200)+potkrovje*kvedenkat*450;
  59.             //((kvedenkat) * 700 + (getKvadrat() - kvadrat_kat) * 200 + potkrovje * kvadrat_kat * 450);
  60.         }
  61.         else
  62.             return kvedenkat*700+(kvzemjiste-kvedenkat)*200;
  63.     }
  64.    
  65. };
  66.  
  67. class Zgrada:public Nedviznost{
  68. private:
  69.     int kvedenstan;
  70.     int brojstanovi;
  71. public:
  72.     Zgrada(char *adresa,char *grad,float kvzemjiste,int kes,int bs):Nedviznost(adresa,grad,kvzemjiste){
  73.         kvedenstan=kes;
  74.         brojstanovi=bs;
  75.     }
  76.     /*
  77.     Цената на зградата се добива како: (kvadratstan∗800)∗brojstanovi+brojstanovi∗500.
  78.     Во цената на зградата, квадратурата на земјиштето не игра улога.
  79.     */
  80.     float cena(){
  81.         return (kvedenstan*800)*brojstanovi+(brojstanovi*500);
  82.         //((kvadrat_na_stan*800)*br_stanovi+(br_stanovi*500));
  83.     }
  84. };
  85.  
  86. class Stovariste:public Nedviznost{
  87. private:
  88.     int kvpokrienost;
  89.     bool kancelarija;
  90. public:
  91.     Stovariste(char *adresa,char *grad,float kvzemjiste,int kp,bool k):Nedviznost(adresa,grad,kvzemjiste){
  92.         kvpokrienost=kp;
  93.         kancelarija=k;
  94.     }
  95.     /*
  96.     (kvadratpokrien−del∗250+kvadraturanepokrien−del∗100). Доколку стовариштето има канцеларија,
  97.     цената се зголемува за 10%.
  98.     */
  99.     float cena(){
  100.         if(kancelarija==0){
  101.             return kvpokrienost*250+(kvzemjiste-kvpokrienost)*100*0.1;
  102.         }
  103.         else
  104.             return ((kvpokrienost*250)+((kvzemjiste-kvpokrienost)*100));
  105.     }
  106.    
  107.     /*
  108.          if(kancelarija == 0) {
  109.             return ((kvadrati_pokrien_del * 250 + (getKvadrat() - kvadrati_pokrien_del) * 100) * 0.1);
  110.         } else {
  111.             return (kvadrati_pokrien_del * 250 + (getKvadrat() - kvadrati_pokrien_del) * 100);
  112.         */
  113.        
  114.    
  115. };
  116.  
  117. Nedviznost &najskap_Imot(Nedviznost **ned,int n){
  118.     Nedviznost *max = ned[0];
  119.     for(int i=0;i<n;i++){
  120.         if(ned[i]  > max){
  121.         max = ned[i];                      
  122.         }
  123.     }
  124.     return *max;
  125. }
  126. int main() {
  127.     int n; // Broj na nedviznosti
  128.  
  129.     int tip_nedviznost; // Tip na nedviznost (1-kukja, 2-zgrada, 3-stovariste)
  130.  
  131.     cin >> n;
  132.  
  133.     Nedviznost **ned = new Nedviznost*[n];
  134.     char adresa[100];
  135.     char grad[30];
  136.     float kvadratura;
  137.     for(int i = 0; i < n; ++i) {
  138.         cin >> tip_nedviznost>> adresa >> grad >> kvadratura;
  139.         if(tip_nedviznost==1) {
  140.             int br_kat;
  141.             float kvadrat_kat;
  142.             bool potkrovje;
  143.             cin >> br_kat >> kvadrat_kat >> potkrovje;
  144.             ned[i] = new Kukja(adresa, grad, kvadratura, br_kat, kvadrat_kat, potkrovje);
  145.         }
  146.         else if(tip_nedviznost == 2) {
  147.             int br_stanovi;
  148.             float kvadrat_na_stan;
  149.             cin >> br_stanovi >> kvadrat_na_stan;
  150.  
  151.             ned[i] = new Zgrada(adresa, grad, kvadratura, br_stanovi, kvadrat_na_stan);
  152.         }
  153.         else if(tip_nedviznost == 3){
  154.             float kvadrati_pokrien_del;
  155.             bool kancelarija;
  156.             cin >>kvadrati_pokrien_del >> kancelarija;
  157.  
  158.             ned[i]= new Stovariste(adresa, grad, kvadratura, kvadrati_pokrien_del,kancelarija);
  159.         }
  160.     }
  161.  
  162.     cout<<"== IMOTI =="<<endl;
  163.     for (int i=0; i<n; i++){
  164.         cout<<*(ned[i])<<endl;
  165.     }
  166.  
  167.     cout << "=== NAJSKAP IMOT ===" << endl;
  168.     cout << najskap_Imot(ned, n);
  169.  
  170.     return 0;
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement