// asunto2.cpp // Kasitellaan asunnon tietoja /vl-96 #include #include #include using namespace std; void tulosta_rivi(const string &teksti,double ala, double tilavuus, int kaappeja) { long oldf = cout.setf(ios::left); cout << setw(20) << teksti << " "; cout.flags(oldf); cout << setw(2) << ala << " m2 " << setw(2) << tilavuus << " m3 " << kaappeja << " kaappia" << endl; } class cHuone { string nimi; double pit,lev,kork; int kaappeja; public: cHuone(const char *n="Huone", double p=2, double l=2, double k=2, int kaap=0): nimi(n), pit(p), lev(l), kork(k), kaappeja(kaap) { } double ala() const { return pit*lev; } double tilavuus() const { return ala()*kork; } int Kaappeja() const { return kaappeja; } void lisaa_kaappeja(void) { kaappeja++; } void tulosta() const { tulosta_rivi(nimi,ala(),tilavuus(),Kaappeja());} }; class cAsunto { cHuone olohuone; cHuone makuuhuone; public: cAsunto() {;} cAsunto(const cHuone &h1,const cHuone &h2): olohuone(h1),makuuhuone(h2) {;} void lisaa_kaappeja() { cHuone *huone = &olohuone; if ( makuuhuone.Kaappeja() < olohuone.Kaappeja() ) huone = &makuuhuone; huone->lisaa_kaappeja(); } double ala() const { return olohuone.ala()+makuuhuone.ala(); } double tilavuus() const { return olohuone.tilavuus()+makuuhuone.tilavuus();} int Kaappeja() const { return olohuone.Kaappeja()+makuuhuone.Kaappeja();} void tulosta() const { cout << "\n"; cout << "Asunto:\n"; cout << " "; olohuone.tulosta(); cout << " "; makuuhuone.tulosta(); cout << " "; tulosta_rivi("Yhteensa:",ala(),tilavuus(),Kaappeja()); } }; int main(void) { cAsunto kaksio(cHuone("olohuone",3,4),cHuone("makuuhuone",3,3)); kaksio.tulosta(); cout << endl; for (int i=0; i<5; i++) kaksio.lisaa_kaappeja(); kaksio.tulosta(); cout << endl; return 0; }