Ohjelmointi++ 2002/ 11.3

Demo 8


Tehtävät


1*2.
Muuta edellisen demon tehtävä 7.7-8 olio-pohjaiseksi, eli muuta kaikki tietueet olioiksi ja kaikki mahdolliset apualiohjelmat metodeiksi. char [] tilalla kannattaa käyttää string-luokkaa.
(n:\kurssit\cpp\moniste\demo\c-ohj\tonitiet.c)
3*.
Muuta demotehtävän 7.4 vastaus sellaiseksi, että kahden taulukon sijasta onkin vain yksi taulukko, jonka alkioina on hinta_tyyppinen tietue (hinta ja paino, määrittele tyyppi). Kirjoita myös vastaava funktio double postimaksu(int paino).
Toteuta vielä siten, että on yksi 2-ulotteinen taulukko (n x 2), jonka 1. sarakkeessa (sarake 0) on paino reaalilukuna ja toisessa sarakkeessa (sarake 1) hinta reaalilukuna.
4.
Tee luentoesimerkin ks: n:\kurssit\cpp\moniste\esim\olioalk\luento02\kassakone.cpp "korjatun" version kassa2.cpp tehtävät 4 ja 5.
5*.
Kirjoita aliohjelma matriisin_suurin, joka palauttaa nx5 matriisin suurimman alkion.
6.
Edellisen kerran tehtävän 7.8 vastauksen funktiota summa käyttäen kirjoita aliohjelma matriisin_summa, joka laskee nx5 reaalilukumatriisin summan (muista että matriisi on taulukko riveistä!).
7.
Ota selvää miten päivämäärä saadaan selville ANSI-C:n mukaisilla kutsuilla. Kirjoita metodi paivays, jolla saadaan nykyinen päiväys selville pvm2.cpp:n cPvm tyyppiseen olioon. Muuta tarvittaessa myös luokan konstruktori ja alusta-metodi sellaiseksi, että jos alustuksessa ei anneta kaikkia arvoja, arvona käytetään nykypäiväystä puuttuville arvoille (pois saa jättää oikealta): (luokka cPvm loytyy tiedostosta)
n:\kurssit\cpp\moniste\demo\c-ohj\pvm2.cpp

Esimerkiksi: cPvm tammi2002(1.1); // => 1.1.2002 cPvm maalis2002(1); // => 1.3.2002 cPvm tanaan; // => 11.3.2001 (testattu 11.3.2002)

8*.
Kirjoita C-merkkijonofunktio monista, jota voidaan kutsua seuraavasti:
char s[80];
monista("Kissa",3,s,80);  /* s:ssa KissaKissaKissa */
9.
Kirjoita vastaava monista C++ merkkijonoille (string, tämä on sikapaljon helpompi kuin tuo 8!).
string st;
st = monista("Kissa",3);  // st:ssa KissaKissaKissa 
B1-2
Käytä demon 7 vastauksia esiintymat.cpp (luokat cEsiintymat ja cKombinaatiot) toteuttaaksesi astiapelille astia3.cpp automaattisen lopun tarkistuksen.
B3-4
kassa2.cpp:n tehtävät 3, 6 ja 7 (4 ja 5 täytyy olla tehty jotta toimii).
B5
kassa2.cpp:n tehtävät 1,2,9 ja 10.
G1-4
kassa2.cpp:n tehtävä 11: Graafinen käyttöliittymä. Kohdat 3,4,5 ja 6 täytyy olla ensin tehtynä jotta voisi toimia.

HUOM!

Tämä on laskennallisesti viimeinen demokerta demojaksoon 1. Demojaksoon 2 tulevat demot 9,10,11,12 ja 13. Demojaksossa 2 jokaisen kerran maksimipistemäärä on 8 tehtävää (jaksossa 1 se oli 10). Pistelaskennassa prosentteihin ei pyöristellä, vaan KATKAISTAAN. Eli 104.95% => 104% < 105%.