(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 kirjastosta cmath, joka sinun pitää ottaa mukaan include-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.