Demo C2 / 28.4
Vähintään kahteen vastaukseen ”automaattinen” testaus perinteisellä tavalla.
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.
...
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);
9.
Muuta pasianssiohjelmaa 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).