Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Наследување Problem 10 (0 / 0)
- Да се креира апстрактна класа за репрезентација на недвижности (Nedviznost). За секоја недвижност се чуваат (5 поени):
- адреса (низа од 100 знаци)
- град (низа од 30 знаци)
- квадратура на земјиштето (реален број)
- За класата Nedviznost треба да се напишат операторите (15 поени):
- оператор << - за печатење на адресата, градот, квадратурата и проценетата цена
- оператор < - за споредување на недвижностите според нивната проценета цена
- Од класата недвижност треба да се изведат класите Kukja, Zgrada и Stovariste (5 поени).
- За секоја куќа дополнително се чуваат:
- број на катови (цел број)
- квадратура на еден кат (реален број). Се смета дека површината на секој кат и поткровјето (доколку го има) се исти
- дали има поткровје (bool променлива)
- За секоја зграда дополнително се чува:
- квадратура на еден стан
- број на станови во зградата
- За секоје стовариште се чува:
- квадратура на покриен дел од стовариштето
- дали има канцеларија (bool променлива)
- За секоја недвижност потребно е да се направи проценка на цената (15 поени).
- Цената на куќата се добива како: kvadratkukja∗700+kvadratdvor∗200+kvadratpotkrovje∗450 . Секој кат од куќата е со иста квадратура. Површината на дворот е површина на земјиштето минус површината на еден кат.
- Цената на зградата се добива како: (kvadratstan∗800)∗brojstanovi+brojstanovi∗500. Во цената на зградата, квадратурата на земјиштето не игра улога.
- Цената на стовариштето се добива како: (kvadratpokrien−del∗250+kvadraturanepokrien−del∗100). Доколку стовариштето има канцеларија, цената се зголемува за 10%.
- Да се напише надворешна функција najskap_Imot која како аргументи прима низа од покажувачи од класата Nedviznost и нивниот број и ги печати информациите за недвижноста со највисока цена (10 поени).
- Sample input
- 2
- 1 Vostanicka Skopje 54.5 1 70 0
- 2 Prvomajska Skopje 100 10 66
- Sample output
- == IMOTI ==
- Adresa: Vostanicka
- Grad: Skopje
- 54.5 kvadrati
- Cena: 45900
- Adresa: Prvomajska
- Grad: Skopje
- 100 kvadrati
- Cena: 533000
- === NAJSKAP IMOT ===
- Adresa: Prvomajska
- Grad: Skopje
- 100 kvadrati
- Cena: 533000
- //CODE//
- #include <iostream>
- #include <cstdlib>
- #include <cstring>
- using namespace std;
- class Nedviznost{
- char adresa[100];
- char grad[30] ;
- float kvadratura;
- public:
- virtual float cena() = 0;
- float getKvadrat(){return kvadratura;}
- Nedviznost(const char *adresa = " ", const char *grad = " " , float kvadratura = 0.0){
- strcpy(this -> adresa, adresa);
- strcpy(this -> grad, grad);
- this -> kvadratura = kvadratura;}
- Nedviznost(const Nedviznost &ob){
- strcpy(this -> adresa, ob.adresa);
- strcpy(this -> grad, ob.grad);
- this -> kvadratura = ob.kvadratura;}
- Nedviznost &operator=(const Nedviznost &ob){
- if(this!= &ob){
- strcpy(this -> adresa, ob.adresa);
- strcpy(this -> grad, ob.grad);
- this -> kvadratura = ob.kvadratura;
- }
- return *this;
- }
- friend ostream& operator<< (ostream &o, Nedviznost &x) {
- o<< "Adresa: " << x.adresa << endl << "Grad: " << x.grad << endl << x.kvadratura<< " kvadrati" << endl;
- o<< "Cena: " << x.cena()<<endl;
- return o;}
- bool operator<(Nedviznost &x) {
- return (x.cena() < x.cena());
- }
- virtual ~Nedviznost(){}
- };
- class Kukja: public Nedviznost{
- int br_kat;
- float kvadrat_kat;
- bool potkrovje;
- public:
- Kukja(const char *adresa = " ", const char *grad = " ", float kvadratura = 0.0, int br_kat = 0, float kvadrat_kat = 0.0, bool potkrovje = false):Nedviznost(adresa,grad,kvadratura)
- {this -> br_kat = br_kat;
- this -> kvadrat_kat = kvadrat_kat;
- this -> potkrovje = potkrovje;}
- ~Kukja(){}
- float cena(){
- float cena;
- cena = ((kvadrat_kat) * 700 + (getKvadrat() - kvadrat_kat) * 200 + potkrovje * kvadrat_kat * 450);
- return cena;}
- };
- class Zgrada: public Nedviznost{
- int br_stanovi;
- float kvadrat_na_stan;
- public:
- Zgrada(){}
- Zgrada(const char *adresa = " ", const char *grad = " ", float kvadratura = 0.0, int br_stanovi = 0, float kvadrat_na_stan = 0.0):Nedviznost(adresa,grad,kvadratura){
- this -> br_stanovi = br_stanovi;
- this -> kvadrat_na_stan = kvadrat_na_stan;}
- float cena(){
- return ((kvadrat_na_stan*800)*br_stanovi+(br_stanovi*500));}
- ~Zgrada(){}
- };
- class Stovariste: public Nedviznost{
- float kvadrati_pokrien_del;
- bool kancelarija;
- public:
- Stovariste(const char *adresa = " ", const char *grad = " ", int kvadratura = 0, float kvadrati_pokrien_del = 0.0, bool kancelarija = false):Nedviznost(adresa,grad,kvadratura){
- this -> kvadrati_pokrien_del = kvadrati_pokrien_del;
- this -> kancelarija = kancelarija;}
- float cena(){
- if(kancelarija == 0) {
- return ((kvadrati_pokrien_del * 250 + (getKvadrat() - kvadrati_pokrien_del) * 100) * 0.1);
- } else {
- return (kvadrati_pokrien_del * 250 + (getKvadrat() - kvadrati_pokrien_del) * 100);}
- }
- ~Stovariste(){}
- };
- Nedviznost &najskap_imot(Nedviznost **ned, int n){
- Nedviznost *max = ned[0];
- for(int i = 0; i < n; i++){
- if(ned[i] > max){
- max = ned[i];
- }
- }
- return *max;
- }
- int main() {
- 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