#include <iostream> #include <algorithm> #include <vector> namespace krit { int bit,count; char a; } class kvartira { public: kvartira(int obshS,int zilS,int kolEtaz,int cena,bool isSanuzel,bool isPanel); ~kvartira(); int Get_obshS(); int Get_zilS(); int Get_kolEtaz(); int Get_cena(); bool isSanuzel(); bool isPanel(); private: int _obshS,_zilS,_kolEtaz,_cena; bool _isSanuzel, _isPanel; }; kvartira::kvartira(int obshS,int zilS,int kolEtaz,int cena,bool isSanuzel,bool isPanel) : _obshS(obshS),_zilS(zilS),_kolEtaz(kolEtaz),_cena(cena),_isSanuzel(isSanuzel),_isPanel(isPanel) {} kvartira::~kvartira() {} int kvartira::Get_cena() { return _cena; } int kvartira::Get_kolEtaz() { return _kolEtaz; } int kvartira::Get_obshS() { return _obshS; } int kvartira::Get_zilS() { return _zilS; } bool kvartira::isPanel() { return _isPanel; } bool kvartira::isSanuzel() { return _isSanuzel; } void kriterii(kvartira kv) { switch (krit::a) { case 'a': if((krit::bit==0)&&(krit::count!=kv.Get_cena())) return; if((krit::bit==1)&&(krit::count>=kv.Get_cena())) return; if((krit::bit==-1)&&(krit::count<=kv.Get_cena())) return; break; case 'b': if((krit::bit==0)&&(krit::count!=kv.Get_kolEtaz())) return; if((krit::bit==1)&&(krit::count>=kv.Get_kolEtaz())) return; if((krit::bit==-1)&&(krit::count<=kv.Get_kolEtaz())) return; break; case 'c': if((krit::bit==0)&&(krit::count!=kv.Get_zilS())) return; if((krit::bit==1)&&(krit::count>=kv.Get_zilS())) return; if((krit::bit==-1)&&(krit::count<=kv.Get_zilS())) return; break; case 'd': if((krit::bit==0)&&(krit::count!=kv.Get_obshS())) return; if((krit::bit==1)&&(krit::count>=kv.Get_obshS())) return; if((krit::bit==-1)&&(krit::count<=kv.Get_obshS())) return; break; case 'e': if(!kv.isSanuzel()) return; break; case 'f': if(!kv.isPanel()) return; break; case 'g': if(kv.isPanel()) return; break; default: return; } std::cout << "==================" << '\n' << "Cena: " << kv.Get_cena() << '\n' << "Obsh.ploshad: " << kv.Get_obshS() << '\n' << "Zilploshad: " << kv.Get_zilS() << '\n' << "Kol-vo etazei: " << kv.Get_kolEtaz() << '\n' << "Panelnii: " << kv.isPanel() << '\n' << "San-Uzel: " << kv.isSanuzel() << std::endl; } int main() { std::vector<kvartira> kvar; do { int obshS,zilS,etaz,cena; bool panel,sanuzel; std::cout << "Vvedite obsh. ploshad, 0 dlya vixoda" << std::endl; std::cin >> obshS; if (obshS<=0) break; std::cout << "Vvedite zil. ploshad" << std::endl; std::cin >> zilS; std::cout << "Vvedite kol-vo etazei" << std::endl; std::cin >> etaz; std::cout << "Vvedite cenu" << std::endl; std::cin >> cena; std::cout << "Nalicie sanuzla (1-da,0-net)?" << std::endl; std::cin >> sanuzel; std::cout << "Panelnii dom (1-da,0-net)?" << std::endl; std::cin >> panel; if(std::cin.fail()) return 1; kvartira kv(obshS,zilS,etaz,cena,sanuzel,panel); kvar.push_back(kv); } while (true); //kriterii std::cout << "Vvedite kriterii: a) cena b) kol-vo etazei c) zilaya ploshad d) obshaya ploshad e) nalichie sanuzla \ f) panelnii dom g) kirpicnii dom: "; std::cin >> krit::a; std::cin.ignore(); if (krit::a>='a' && krit::a<='d') { std::cout << "Vvedite kolichestvo: "; std::cin >> krit::count; std::cin.ignore(); std::cout << "Vvedite 1 - bolshe, -1 - menshe, 0 - ravno: "; std::cin >> krit::bit; } std::cout << "+++++Naideno++++++" << std::endl; for_each(kvar.begin(),kvar.end(),kriterii); std::cout << "------------------"; system("PAUSE"); return 0; } |