(H) Nelilaskin vähän yli neljällä komennolla¶
Tavoite: Opin käyttämään funktio-osoittimia.
Ohjeita:
Hae ohjelmakoodipohja: templates/10/calculator/
->
student/10/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
jacalculations.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.