(N) Vaihtorahat

Tavoite: Tutkin vielä tarkemmin C++:n kokonaislukutietotyyppien toimintaa. Opin käyttämään kokonaislukujakoa ja jakojäännöstä.

Ohjeita: Edellisissä tehtävissä oli valmiiksi toteutettu ohjelmakoodipohja ja projektitiedosto, jotka sait käyttöösi Git-keskustietovaraston kautta. Kaikissa tämän kurssin tehtävissä ei kuitenkaan ole valmista ohjelmakoodipohjaa, vaan sinun pitää myös osata tehdä uusi projekti itse Qt Creatorissa. (Ohjeet tähän löytyy aikaisemmasta luvusta 3.3 Qt Creator -ohjelmointiympäristö ja siellä kohdassa Qt Creatorin käyttö virtuaalipöydällä, vaiheesta 4 eteenpäin.)

Tässä tehtävässä teet projektin itse. Projekti pitää kuitenkin tallettaa täsmälleen oikean nimiseen hakemistoon, jotta automaattinen arviointijärjestelmä löytää sen, kun palautat ratkaisusi kurssialustalle. Tallenna projekti tietovaraston hakemistoon student/01/change. Huomaathan, että jos luot projektin Qt Creatorissa suoraan nimellä change, tallentaa Qt Creator projektin tiedostot hakemistoon, jonka nimi on change ikkunassa Project Location määritettyyn hakemistoon. Sinun ei siis tarvitse erikseen luoda kansiota change enää kansion student/01 alle.

Jatkossa näet aina tehtävänannon ensimmäisestä tekstikappaleesta käytetäänkö tehtävässä valmista pohjaa vai luodaanko projekti itse, ja minkä niminen hakemiston pitää olla.

Tehtävänanto: Toteuta ohjelma, joka kysyy ostosten hinnan ja millä rahalla maksetaan ja tulostaa, minkälaisia vaihtorahoja pitää antaa. Yksinkertaistetaan ohjelmaa niin, että käytössä ei ole kuin 1, 2, 5 ja 10 euron rahoja ja kokonaishinta on aina tasaeuroja.

Ohjelman pitäisi toimia seuraavien esimerkkien mukaisesti:

Purchase price: 12
Paid amount of money: 50
Offer change:
3 ten-euro notes
1 five-euro notes
1 two-euro coins
1 one-euro coins
Purchase price: 43
Paid amount of money: 50
Offer change:
1 five-euro notes
1 two-euro coins
Purchase price: 12
Paid amount of money: 12
No change
Purchase price: 12
Paid amount of money: 11
No change

Vinkkejä tehtävän tekemiseen:

  • Muistathan, miten kokonaislukujako toimii.

  • Muistathan, millä operaattorilla saat jakojäännöksen.

  • Tähän mennessä ei ole vielä puhuttu funktioista, eikä niitä ole tarkoitus käyttää tässä tehtävässä, mutta voit silti miettiä (kirjoittamatta koodia), miten tehtävän voisi tehdä funktion avulla.

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