// 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 sellaisenaan
1. 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) { ... }