// huone.cpp // Käsitellään huoneen tietoja /vl-96 /* Tehtävät: 0. Käännä ja aja ensin sellaisenaan 1. Laita huoneen metodit ala, tilavuus ja Kaappeja toimiviksi (Kaappeja palauttaa huoneen kaappien lukumäärän). 2. Täydennä huoneen tulosta-metodi siten, että huoneen tiedot tulostuvat seuraavasti: olohuone 12 m2 24 m3 1 kaappia 3. Laita kaikki asinamukaiset metodit const-metodeiksi 4. Laita huoneen metodi lisaa_kaappeja toimivaksi 5. Mitä ohjelma tulostaa nyt? 6. Laita kaikki asianmukaiset metodit const-metodeiksi 7. Kokeile vielä*****************************************************************************/ #include <iostream.h> #include <iomanip.h> #include <string>
void tulosta_rivi(const string &teksti,double ala, double tilavuus, int kaappeja) // tulosta_rivi("olohuone",12,24,1) tulostaa rivin muodossa: // olohuone 12 m2 24 m3 1 kaappia { long oldf = cout.setf(ios::left); cout << setw(10) << 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() { return 0; } double tilavuus() { return 0; } int Kaappeja() { return 0; } void lisaa_kaappeja(void) { cout << "Kaappi lisää" << endl; } void tulosta() { cout << "Huone" << endl; } };
int main(void) { cHuone olohuone("olohuone",3,4); olohuone.tulosta(); olohuone.lisaa_kaappeja(); olohuone.tulosta(); return 0; }
// asunto.cpp // Käsitellään asunnon tietoja /vl-96 /* Tehtävät: 0. Käännä ja aja ensin sellaisenaan1. Kopioi-liimaa tiedostosta huone.cpp luokka cHuone asunto-luokan yläpuolella Kopioi-liimaa myös aliohjelma tulosta_rivi cHuoneen yläpuolelle 2. Lisää asunto-luokkaan kaksi huonetta: olohuone ja makuuhuone 3. Lisää asuntoon metodit ala, tilavuus ja Kaappeja, jotka palauttavat asunnon vast.. yhteistiedot 4. Täydennä asunnon tulosta-metodi siten, että asunnon tiedot tulostuvat seuraavasti: Asunto: Huone 4 m2 8 m3 0 kaappia Huone 4 m2 8 m3 0 kaappia Yhteensä: 8 m2 16 m3 0 kaappia
Kokeile! 5. Lisää asuntoon rakentaja-metodi cAsunto(const cHuone &h1,const cHuone &h2): olohuone(h1),makuuhuone(h2) {;} ja muuta kaksion alustus muotoon: cAsunto kaksio(cHuone("olohuone",3,4),cHuone("makuuhuone",3,3)); 6. Mitä ohjelma tulostaa nyt? 7. Laita kaikki asianmukaiset metodit const-metodeiksi 8. Tee asunnon lisaa_kaappeja metodista sellainen, että se lisää kaapin aina siihen huoneeseen, jossa on vähiten kaappeja 9. Mitä ohjelma tulostaa nyt? 10. Korjaa huoneen konstruktori "tehokkaammaksi" *11. Muuta asunnon huoneet taulukoksi ja laita huonemäärä vakioksi sekä kokeile 3:lla huoneella. *****************************************************************************/ #include <iostream.h> #include <iomanip.h>
class cAsunto { public: cAsunto() {;} void lisaa_kaappeja() { cout << "Lisätään kaappeja" << endl; } void tulosta() { cout << "\n"; cout << "Asunto:\n"; } };
int main(void) { cAsunto kaksio; kaksio.tulosta(); cout << endl; for (int i=0; i<5; i++) kaksio.lisaa_kaappeja(); kaksio.tulosta(); cout << endl; return 0; }
/* DEMO_PRO.C */ #include <stdio.h>double demo_pros(int tehtavia,int tehtyja) /* Palautetaan montako prosenttia demoista on tehty */ { ... }
int demo_pist(double pros) /* Palautetaan montako demopistettä saa tehdystä demomäärästä ** Pistetaulukko löytyy työkirjan etukannesta */ { ... }
int main(void) { ... }