Ohjelmointi++ 2002/ 15.4

Demo 12


1.
Muuta ohjelman (ks. demo 11 vast.) valuutta.cpp tietorakenne kerhon rakennetta vastaavaksi (eli osoitintaulukoksi).
2.
Korvaa luokka cValuutat STL:n listan tai mapin avulla toteutetulla luokalla.
3.
Toimiiko valuutta.cpp (ks. demo 11 vastaukset) siten, että sitä voidaan käyttää seuraavasti ja jos voi niin miksi:
Määrä ja valuutta>10 sKR[RET]
10.00 Skr on 6.00 mk.
Määrä ja valuutta>2[RET]
2.00 Skr on 1.20 mk.
Määrä ja valuutta>[RET]
Kiitos!

4-6.
Kirjoita ohjelma joka toimisi seuraavasti (kiinnitä huomiota siihen, että komentovalikoimaa voidaan ohjelmaan lisätä "kohtuullisen" helposti. Jos jaksat kaivaa, niin vihjeitä löydät tiedostosta n:\kurssit\cpp\ali\menut.c):
Anna komento>Ynnää 3 4 5[RET]
Tulos on 12.
Anna komento>Isoksi kana[RET]
kana isona on KANA
Anna komento>palindromiko saippuakivikauppias[RET]
Sana "saippuakivikauppias" on palindromi!
Anna komento>Ynnää 2 1[RET]
Tulos on 3.
Anna komento>Yn 2 1[RET]
Tulos on 3.
Anna komento>Yh 2 1[RET]
En tunne komentoa YH!
Anna komento>[RET]
Mallivastauksen C++-versioon tuli mm.
typedef int (*pKomentoFunktio)(const string &); //
  Funktiotyyppi komentoja varten

//---------------------------------------------------------------------------- int avustus(const string ¶m) { ... }

int ynnaa(const string ¶m) { ... }

int muuta_isoksi(const string ¶m) { ... }

int palindromiko(const string ¶m) { ... }

... luokkia cKomento ja cKomennot (sis. mm. metodin: etsi) ...

//--------------------------------------------------------------------------- int main(void) { cKomennot komennot(10); komennot.lisaa(cKomento("?" ,avustus )); komennot.lisaa(cKomento("+" ,ynnaa )); komennot.lisaa(cKomento("Ynnää" ,ynnaa )); komennot.lisaa(cKomento("Isoksi" ,muuta_isoksi )); komennot.lisaa(cKomento("Palindromiko",palindromiko ));

string s;

while ( 1 ) { cout << "Anna komento>"; getline(cin,s); if ( s == "" ) break; komennot.tulkitse(s); } return 0; }


7*.
Vaikket tekisikään tehtävää 4-6, niin lisää siihen help.c">help.c:ta kayttäen avustus. Eli jos et ole tehnyt tehtävää 4-6, niin kirjoita pääohjelma joka ? painamisella tulostaa avustuksen käyttäen kelp.c:n (ota tiedosto itsellesi ali-hakemistosta ja tutki käyttöä help.h">help.h -tiedostosta) aliohjelmaa. Huomaa, että voit myös luoda cHelp-tyyppisen help-olion. Kirjoita myös alkeellinen avustustiedosto.
8.
Kirjoita funktio tarkista_kello(const string &jono), joka tarkistaa onko parametrina viety merkkijono oikeata muotoa kellonajaksi. Jos on vikaa, niin funktio palauttaa !=0 ja tulostaa mahdollisesti selville saamansa virheen.

B1.
Muuta ohjelman (ks. demo 11 vast.) valuutta.cpp metodi lisaa sellaiseksi, että tarvittaessa luodaan lisää tilaa. Tee sama tehtävän 1 vastaukselle.

GURU-tehtävät

Guruillekin suosittelen tuota 4-7 tehtävää.


HUOM!


Tämän demon (12) jälkeen on vielä demo 13 (ma 22.4).

Vaiheessa 6 pitää olla tiedostojen lukeminen ja kirjoittaminen sekä luokkien välinen yhteistyö käyttöliittymäluokan puolella. Luonnollisesti projekti on jaettu osiin.

Vaiheessa 7. täytyy olla valmiina ainakin (sovittava ohjaajan kanssa henkilökohtaisesti)