- 1.
- Suunnittele luokka cLinjaAuto, jossa on paikkojen lukumäärä ja vapaiden paikkojen lukumäärä. Tee metodit tulosta sekä lisaa ja vahenna muuttamaan matkustajien lukumäärää. Alla testipääohjelma:
...
int main(void)
{
cLinjaAuto pikkubussi(10),isobussi(45);
pikkubussi.lisaa(4); pikkubussi.tulosta();
isobussi.lisaa(30); isobussi.tulosta();
int yli = pikkubussi.lisaa(15);
isobussi.lisaa(yli);
pikkubussi.tulosta(); isobussi.tulosta();
if ( isobussi.tilaa() )
cout << "Isoon bussiin mahtuu!" << endl;
return 0;
}
- 2.
- Kirjoita luokka cKulkuneuvo, jossa on ainakin nopeus ja
matkustajien lukumäärä. Peri tästä luokat cLaiva ja
cLentokone joissa kummassakin on jokin oma erikoisominaisuus yleiseen kulkuneuvoon verrattuna. Kirjoita
myös pieni testipääohjelma.
- 3.
- Muuta
n:\kurssit\cpp\moniste\demo\c-ohj\valuutts.cpp:n
luokka cValuutat sellaiseksi, että perinnän tilalla
käytetään koostamista. Mihinkään muualle ei saa tehdä
muutoksia kuin tähän luokkaan (tavitsee uudemman
kääntäjän, esim gcc 2.8.1 tai C++Builder 5.0,
periatteessa voi tehdä hyvinkin ihan paperitehtävänä,
jos omistaa vain vanhan kääntäjän).
- 4*.
- Kirjoita
taul_d.cpp
(ks. moniste 16.5) taulukolle
metodi sijoita, jolla voidaan sijoittaa taulukkoon
toinen taulukko:
...
int main(void)
{
cTaulukko luvut(7);
luvut.lisaa(0); luvut.lisaa(2);
cout << luvut << endl;
cTaulukko taul;
taul.sijoita(luvut); // tai jopa taul = luvut;
cout << taul << endl; // tulostaa saman kuin edellä
return 0;
}
- 5*.
- Kirjoita edellisen tehtävän luokkaan sijoitusoperaattori ja CopyConstruktori.
- 6-7.
- Kirjoita ohjelma, joka kyselee nimiä kunnes annetaan
tyhjä rivi ja tulostaa tämän jälkeen nimet aakkosjärjestyksessä. Nimet syötetään muodossa "Aku Ankka",
mutta siitä huolimatta ne lajitellaan siten, että "Iines Ankka" < "Hannu Hanhi", eli sukunimen mukaan.
Käytä ratkaisussa jotakin STL:n tietorakennetta sekä
algoritmia ja ota pohjaksi esim:
AakkostaHenkilot.java.
// Merkkijonon lukeminen päätteltä:
string s;
cout << "Anna jono";
getline(cin,s);
- 8.
- Muuta pasianssiaohjelma
(n:\kurssit\ohj2\moniste\demo\cpp\pasi.cpp)
kunnolliseksi olio-ohjelmaksi, eli tietueet luokiksi ja
aliohjelmat metodeiksi.
- 9.
- Muuta pasianssiaohjelmaa siten, että ohjelma piirtää
lopuksi histogrammin siitä, millä todennäköisyydellä
peli päättyy i:teen korttiin (siis esimerkiksi
seuraavasti):
1 ************************
2 *****************
3 *********
4 ****
5 **
6 *
7 *
...
Malliohjelmassa luokka näytti seuraavalta:
/*************************************************************************/
class cHisto {
int lkm;
long *esiintymat;
public:
cHisto(int n);
~cHisto();
int lisaa(int i);
long etsi_max() const;
int piirra() const;
};
- 10*.
- Lisää cHisto-luokkaan private sijoitusoperaattori ja
CopyConstruktori. (Tämän voi tehdä vaikka ei tekisi
8-9 tehtäviä, kun tekee "dummy"-metodit noista muista).