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 kvzemjiste;
- public:
- Nedviznost(){}
- Nedviznost(char *a,char *g,float kz){
- strcpy(adresa,a);
- strcpy(grad,g);
- kvzemjiste=kz;
- }
- ~Nedviznost(){}
- // 5poeni
- virtual float cena()=0; //mora
- friend ostream& operator<<(ostream &out,Nedviznost &n){
- out<<"Adresa: "<<n.adresa<<endl;
- out<<"Grad: "<<n.grad<<endl;
- out<<n.kvzemjiste<<" kvadrati"<<endl;
- out<<"Cena: "<<n.cena()<<endl;
- return out;
- }
- //10 poeni
- bool operator<(Nedviznost &n){
- if(cena()<n.cena())return true;
- else return false;
- }
- //40 poeni
- char *getAdresa(){
- return adresa;
- }
- };
- class Kukja:public Nedviznost{
- private:
- int brkatovi;
- float kvedenkat;
- bool potkrovje;
- public:
- Kukja(char *adresa,char *grad,float kvzemjiste,int bk,float kek,bool p):Nedviznost(adresa,grad,kvzemjiste){
- brkatovi=bk;
- kvedenkat=kek;
- potkrovje=p;
- }
- /*Цената на куќата се добива како: kvadratkukja∗700+kvadratdvor∗200+kvadratpotkrovje∗450 .
- Секој кат од куќата е
- со иста квадратура. Површината на дворот е површина на земјиштето минус површината на
- еден кат. */
- float cena(){
- if(potkrovje){
- return kvedenkat*700+((kvzemjiste-kvedenkat)*200)+potkrovje*kvedenkat*450;
- //((kvedenkat) * 700 + (getKvadrat() - kvadrat_kat) * 200 + potkrovje * kvadrat_kat * 450);
- }
- else
- return kvedenkat*700+(kvzemjiste-kvedenkat)*200;
- }
- };
- class Zgrada:public Nedviznost{
- private:
- int kvedenstan;
- int brojstanovi;
- public:
- Zgrada(char *adresa,char *grad,float kvzemjiste,int kes,int bs):Nedviznost(adresa,grad,kvzemjiste){
- kvedenstan=kes;
- brojstanovi=bs;
- }
- /*
- Цената на зградата се добива како: (kvadratstan∗800)∗brojstanovi+brojstanovi∗500.
- Во цената на зградата, квадратурата на земјиштето не игра улога.
- */
- float cena(){
- return (kvedenstan*800)*brojstanovi+(brojstanovi*500);
- //((kvadrat_na_stan*800)*br_stanovi+(br_stanovi*500));
- }
- };
- class Stovariste:public Nedviznost{
- private:
- int kvpokrienost;
- bool kancelarija;
- public:
- Stovariste(char *adresa,char *grad,float kvzemjiste,int kp,bool k):Nedviznost(adresa,grad,kvzemjiste){
- kvpokrienost=kp;
- kancelarija=k;
- }
- /*
- (kvadratpokrien−del∗250+kvadraturanepokrien−del∗100). Доколку стовариштето има канцеларија,
- цената се зголемува за 10%.
- */
- float cena(){
- if(kancelarija==0){
- return kvpokrienost*250+(kvzemjiste-kvpokrienost)*100*0.1;
- }
- else
- return ((kvpokrienost*250)+((kvzemjiste-kvpokrienost)*100));
- }
- /*
- 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);
- */
- };
- 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