: http://users.metropolia.fi/~pasitr/2014-2015/ti00aa43-3004/kt/03/ratkaisut/ Tehtävä 1. (1 piste) Tee ohjelma K03T01.cpp, jossa ohjelmalle syötetään kokonaisluku. Jos kokonaisluku on positiivinen, niin tulostetaan teksti: "Luku on positiivinen". Jos kokonaisluku on negatiivinen, niin tulostetaan teksti: "Luku on negatiivinen". Jos luku on 0, niin tulostetaan luku on nolla. Ohjelman syöte- ja tulostemalli on kuvassa 1. Ratkaisu on kuvassa 2. Kuva 1. Ohjelman K03T01.cpp tulostus Kuva 2. Ohjelman K03T01.cpp ratkaisu
Tehtävä 2. (1 piste) Tee ohjelma K03T02.cpp, joka lukee kokonaislukuja ja etsii luvuista pienimmän ja suurimman. Ohjelma lopettaa etsinnän, kun syötetään luku 99999. Tämän jälkeen ohjelma tulostaa pienimmän ja suurimman luvun. Ohjelman syöte- ja tulostemalli on kuvassa 3. Ratkaisu on kuvassa 4. Kuva 3. Ohjelman K03T02.cpp tulostus Kuva 4. Ohjelman K03T02.cpp ratkaisu
Tehtävä 3. (1 piste) Tee ohjelma K03T03.cpp, jolle syötetään kokonaisluku väliltä 1-365. Aluksi ohjelma tarkistaa, että luku on kyseisellä välillä. Jos näin ei ole, niin tulostetaan virheilmoitus ja syötetty luku. Jos luku on oikein, niin tutkitaan mikä päiväys vastaa kyseistä juoksevaa päivää vuoden alusta. Oletetaan, että vuosi ei ole karkausvuosi. Ohjelma tulostaa kyseisen päivän muodossa pp.kk. Ohjelman syöte- ja tulostemalli on kuvassa 5. Ohjelman ratkaisu on kuvassa 6. Kuva 5. Ohjelman K03T03.cpp tulostus Kuva 6. Ohjelman K03T03.cpp ratkaisu
Tehtävä 4. (2 pistettä) Tee C-ohjelma K03T04.cpp, jolle syötetään N mittaustulosta taulukkoon mittaus. Mittaustulokset ovat desimaalilukuja (double) ja N:n arvo kysytään käyttäjältä. Sitten ohjelma laskee tasoitetut arvot tasoituskaavoilla ti x i t i ( xi 1 xi xi 1 )/3, kun, kun i 1 tai N i 2, 3,..., N 1, missä xi on alkuperäinen ja ti on tasoitettu arvo. Esimerkiksi syötettäessä N:n arvolla 5 luvut 4, 2, 3, 1, 8, niin ohjelman tulostuksen pitää olla samanlainen kuin kuvassa 7. Ohjelman ratkaisu on kuvassa 8. Kuva 7. Ohjelman K03T04.cpp tulostus Kuva 8. Ohjelman K03T04.cpp ratkaisu
Tehtävä 5. (2 pistettä) Tarkastellaan seuraavaa tilannetta (kuva 9). Tee ohjelma K03T05.cpp, jolle syötetään ympyrän säde r (oletetaan, että käyttäjä syöttää kiltisti positiivisen luvun). Sen jälkeen säde välitetään arvoparametrina funktiolle ympyran_ala, joka palauttaa arvonaan ympyrän pinta-alan (pinta-ala A lasketaan kaavalla A = πr 2 ). C:ssä phi:n (π) arvoon voidaan viittaa vakiomerkinnällä M_PI, kun ohjelman alussa on #include <math.h>. Tämän jälkeen lasketaan ympyrän ympärillä olevan pienimmän mahdollisen neliön pintaala funktiolla nelion_ala. Funktiolle välitetään arvoparametrina neliön sivun pituus ja se palauttaa arvonaan neliön pinta-alan. Edelleen ohjelma laskee neliön ympärille piirretyn mahdollisimman pienen ympyrän pinta-alan funktiolla ympyran_ala. Toteuta myös funktio hypotenuusan_pituus, joka saa arvonaan suorakulmaisen kolmion kateetit (merkitään a ja b) ja palauttaa arvonaan hypotenuusan (merkitään c) pituuden. Pythagooran lause (http://fi.wikipedia.org/wiki/pythagoraan_lause) on c 2 = a 2 + b 2. C:ssä neliöjuuri voidaan laskea funktiolla sqrt. Ohjelman pitää tulostaa ympyrän sisällä olevan neliön pinta-ala, neliön pinta-ala ja sen ympärillä olevan pinta-ala sekä ympyröiden pinta-alojen suhde. Ohjelman syöte- ja tulostemalli on kuvassa 10. Ohjelman ratkaisu on kuvassa 11. Kuva 9. Tilannetta havainnollistava kuva
Kuva 10. Ohjelman K03T05.cpp tulostus Kuva 11. Ohjelman K03T05.cpp ratkaisu
Tehtävä 6. (2 pistettä) Tee C-ohjelma K03T06.cpp, jolle syötetään 12 kokonaislukua 3 x 4 -taulukkoon. Sen jälkeen ohjelma laskee kunkin rivin lukujen summan sekä koko taulukon lukujen summan. Kaksiulotteisen taulukon läpikäynti onnistuu kahdella sisäkkäisellä for-lauseella. Lopuksi tulostetaan taulukon alkiot rivi kerrallaan ja lasketut summat. Ohjelman syöte- ja tulostemalli on kuvassa 12. Ohjelman ratkaisu on kuvassa 13. Kuva 12. Ohjelman K03T06.cpp syöte- ja tulostusmalli Kuva 13. Ohjelman K03T06.cpp ratkaisu
Tehtävä 7. (2 pistettä) Kirjoita ohjelma K03T07.cpp, joka arpoo lottorivin (7 numeroa ja 3 lisänumeroa) ja tulostaa ne nousevassa järjestyksessä! Ratkaisussa ei saa käyttää automaattisia lajittelufunktioita. Esimerkkitulostus on kuvassa 14. Ohjelman ratkaisu on kuvassa 15. Kuva 14. Ohjelman K03T07.cpp tulostusmalli Kuva 15. Ohjelman K03T07.cpp ratkaisu