Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <cstring>
- using namespace std;
- class Nedviznost{
- protected:
- char adresa[100];
- char grad[30];
- float kvadrat;
- public:
- Nedviznost(char * adresa, char * grad, float kvadrat){
- strcpy(this->adresa, adresa);
- strcpy(this->grad, grad);
- this->kvadrat = kvadrat;
- }
- friend ostream &operator <<(ostream &out, Nedviznost &n){
- out<<"Adresa: "<<n.adresa<<endl;
- out<<"Grad: "<<n.grad<<endl;
- out<<n.kvadrat<<" kvadrati"<<endl;
- out<<"Cena: "<<n.cena()<<endl;
- return out;
- }
- bool operator <(Nedviznost &n){
- if(this->cena() < n.cena())return true;
- return false;
- }
- virtual float cena() = 0;
- };
- class Kukja:public Nedviznost{
- private:
- int katovi;
- float kvadratura_kat;
- bool potkrovje;
- public:
- Kukja(char *adresa, char*grad, float kvadrat, int katovi, float kvadratura_kat, bool potkrovje):Nedviznost(adresa, grad,kvadrat){
- this->katovi = katovi;
- this->kvadratura_kat = kvadratura_kat;
- this->potkrovje = potkrovje;
- }
- float cena(){
- float nazad=0;
- nazad+=(kvadrat-kvadratura_kat)*200;
- nazad+=(kvadratura_kat*katovi)*700;
- if(potkrovje)nazad+=kvadratura_kat*450;
- return nazad;
- }
- };
- class Zgrada:public Nedviznost{
- private:
- float kvadratura_stan;
- int brojstanovi;
- public:
- Zgrada(char *adresa, char*grad, float kvadrat, float kvadratura_stan, int brojstanovi):Nedviznost(adresa, grad,kvadrat){
- this->kvadratura_stan = kvadratura_stan;
- this->brojstanovi = brojstanovi;
- }
- float cena(){
- float nazad=0;
- nazad+=kvadratura_stan*800*brojstanovi;
- nazad+=brojstanovi*500;
- return nazad;
- }
- };
- class Stovariste:public Nedviznost{
- private:
- float kvadratura_pokrien;
- bool kancelarija;
- public:
- Stovariste(char *adresa, char*grad, float kvadrat, float kvadratura_pokrien, bool kancelarija):Nedviznost(adresa, grad,kvadrat){
- this->kvadratura_pokrien = kvadratura_pokrien;
- this->kancelarija = kancelarija;
- }
- float cena(){
- float nazad=0;
- nazad+=kvadratura_pokrien*250;
- nazad+=(kvadrat-kvadratura_pokrien)*100;
- if(kancelarija)nazad*=1.1;
- return nazad;
- }
- };
- Nedviznost * najskap_imot(Nedviznost **ned, int n){
- int naj = 0;
- for(int i=1; i<n; i++){
- if(ned[naj]->cena() < ned[i]->cena())naj = i;
- }
- return ned[naj];
- }
- int main() {
- cout<<"HEHEHE";
- int n; // Broj na nedviznosti
- int tip_nedviznost; // Tip na nedviznost (1-kukja, 2-zgrada, 3-stovariste)
- cin >> n;
- Nedviznost **ned = new Nedviznost*[n];
- char adresa[100];
- char grad[30] ;
- float kvadratura;
- for(int i = 0; i < n; ++i) {
- cin >> tip_nedviznost>> adresa >> grad >> kvadratura;
- if(tip_nedviznost==1) {
- int br_kat;
- float kvadrat_kat;
- bool potkrovje;
- cin >> br_kat >> kvadrat_kat >> potkrovje;
- ned[i] = new Kukja(adresa, grad, kvadratura, br_kat, kvadrat_kat, potkrovje);
- }
- else if(tip_nedviznost == 2) {
- int br_stanovi;
- float kvadrat_na_stan;
- cin >> br_stanovi >> kvadrat_na_stan;
- ned[i] = new Zgrada(adresa, grad, kvadratura, br_stanovi, kvadrat_na_stan);
- }
- else if(tip_nedviznost == 3){
- float kvadrati_pokrien_del;
- bool kancelarija;
- cin >>kvadrati_pokrien_del >> kancelarija;
- ned[i]= new Stovariste(adresa, grad, kvadratura, kvadrati_pokrien_del,kancelarija);
- }
- }
- cout<<"== IMOTI =="<<endl;
- for (int i=0; i<n; i++){
- cout<<*(ned[i])<<endl;
- }
- cout << "=== NAJSKAP IMOT ===" << endl;
- cout << najskap_imot(ned, n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement