(H) Kuutio¶
Tavoite: Tutkin vielä tarkemmin C++:n kokonaislukutietotyyppien toimintaa. Opin tarkastamaan ylivuotoja.
Ohjeita: Kahdessa edellisessä tehtävässä 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.
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/02/cube
. Huomaathan, että jos
luot projektin Qt Creatorissa suoraan nimellä cube
,
tallentaa Qt Creator projektin tiedostot hakemistoon, jonka nimi on
cube
ikkunassa Project Location
määritettyyn hakemistoon.
Sinun ei siis tarvitse erikseen luoda kansiota cube
enää
kansion student/02
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 laskee ei-negatiivinen kokonaisluvun kuution (eli korottaa luvun kolmanteen potenssiin) ja tulostaa sen, tai virheilmoituksen, jos laskennassa tapahtuu ylivuoto.
Käytä syötteen ja kaikkien muidenkin muuttujien tyyppinä int
,
vaikka riittääkin, että ohjelma toimii ei-negatiivisilla luvuilla.
Ohjelman pitäisi toimia seuraavien esimerkkien mukaisesti:
Enter a number: 2
The cube of 2 is 8.
Enter a number: 100000
Error! The cube of 100000 is not -1530494976.
Enter a number: 200000000
Error! The cube of 200000000 is not 134217728.
Vinkkejä tehtävän tekemiseen:
- Virheilmoituksen tulostuksessa jälkimmäinen luku (“is not …”)
on se luku, joka laskun tulokseksi tuli, kun kääntäjä suoritti
laskennan
int
-tyyppisillä muuttujilla. - C++:ssa ei ole operaattoria
**
kuten Pythonissa. Kaikkein yksinkertaisimmin saat kuution laskettua suorittamalla kaksi kertolaskua. - C++:ssa on myös funktio
pow
, jota tässä voi käyttää, jos haluat harjoitella kirjastojen käyttämistä. Ko. funktio löytyy kirjastostacmath
, joka sinun pitää ottaa mukaaninclude
-direktiivillä. - C++:ssa on myös operaattori
^
, mutta sitä ei kannata käyttää tässä, koska se ei korota potenssiin, vaan suorittaa bittikohtaisen XOR-operaation. - Kuten kolmannesta esimerkkiajosta huomaat, riittävän suurella syötteen arvolla laskun tulokseksi ei tulekaan negatiivinen vaan positiivinen luku. Ei siis riitä, että tarkastat, onko tulos positiivinen. Muistele, miten ala-asteen matematiikan opettaja neuvoi tarkastamaan laskujen tulokset matematiikan kokeessa. Voit käyttää samaa kikkaa tarkastuksen suorittamiseen tässä.
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.