(H) Nelilaskin vähän yli neljällä komennolla

Tavoite: Opin käyttämään funktio-osoittimia.

Ohjeita: Hae ohjelmakoodipohja: templates/09/calculator/ -> student/09/calculator/.

a) Tutustu ohjelmakoodipohjassa valmiina toteutettuihin tietorakenteisiin struct Command ja const vector<Command> COMMANDS. Näihin on talletettuna tiedot kaikista niistä komennoista, joita tehtävässä toteutettavan nelilaskimen pitää osata suorittaa oikein. Kommennon suorittaminen onnistuu tietueeseen talletettuja tietoja käyttäen.

Toteuta puuttuvat osat ohjelmaan siten, että se toimii seuraavasti:

calculator> + 1 1
2.00
calculator> PLUS 1 1
2.00
calculator> plus 1 1
2.00
calculator> AdDiTiOn 1 1
2.00
calculator> + 1 2 3
Error: wrong number of parameters.
calculator> + 1
Error: wrong number of parameters.
calculator> + 1 two
Error: a non-number operand.
calculator> + one two
Error: a non-number operand.
calculator> stop now
Error: wrong number of parameters.
calculator> hey stop
Error: unknown command.
calculator> stop
Thanks and see you later!

Vinkkejä tehtävän tekemiseen:

  • Tutustu tiedostojen calculations.cpp ja calculations.hh sisältöön ennen kuin alat toteuttaa tehtävää. Näihin tiedostoihin ei kuitenkaan tarvitse tehdä muutoksia tässä kohdassa.
  • Ratkaisun idea on samantyylinen kuin esimerkissä examples/04/datadrivenprogramming (jota käsiteltiin 4-kierroksella kohdassa Tieto-ohjattu ohjelmointi).
  • Komentotietueisiin (Commmand) on tallennettu ne tiedot, joita komennon suorittamiseen tarvitsee. Tarkoituksena on siis käydä komentovektorista läpi komentotietueita ja toimia kenttien arvojen mukaan. Tarkistettavaksi jää, syöttikö käyttäjä tunnetun komennon, oikean määrän parametreja ja saako operandit muutettua oikeaan tietotyyppiin. Tarvittaessa tulostetaan virheilmoitus esimerkkiajon mukaisesti. Lopuksi annettu laskutoimitus suoritetaan hyödyntämällä toimintokenttään (action) tallennettua funktio-osoitinta, mikäli syötetty komento oli oikeellinen.
  • Saat muutettua yksittäisen kirjaimen suureksi käyttämällä funktiota toupper, jonka käyttämistä on käsitelty materiaaliosiossa 3.5.

b) Lisää laskimeen uutena toimintona potenssiin korotus. Kuten aiemmatkin operaatiot, tämä ottaa kaksi parametria: kantaluvun ja eksponentin. Komennot, joilla tätä laskutoimitusta voi käyttää, ovat ^, POWER ja EXP.

Esimerkki ohjelman toiminnasta:

calculator> ^ 2 3
8.00
calculator> PoWeR 2 3
8.00
calculator> exp 1 1
1.00
calculator> Exp 1 2 3
Error: wrong number of parameters.
calculator> ^ 1
Error: wrong number of parameters.
calculator> ^ 1 two
Error: a non-number operand.
calculator> quit
Thanks and see you later!

A+ esittää tässä kohdassa tehtävän palautuslomakkeen.