Tehtävä 24. Kallioparkki veloittaa 2 euroa kolmelta ensimmäiseltä pysäköintitunnilta. Yli kolmen tunnin pysäköinnistä veloitetaan lisäksi 0.5 euroa jokaiselta yli menevältä tunnilta. Kuitenkin maksimiveloitus on 10 euroa 24 tunnilta. Tee ohjelma joka lukee kolmen asiakkaan pysäköintiajat ja tulostaa tulokset alla olevassa muodossa: Asiakas Tunnit Veloitus 1 1.5 2.00 2 4.0 2.50 3 24.0 10.00 YHTEENSÄ 29.5 14.50 Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Tehtävä 25. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi. Lause y = floor( x + 0.5 ); pyöristää luvun lähimmäksi kokonaisluvuksi (double typpisenä kylläkin) ja tallettaa tuloksen muuttujaan y. Tee ohjelma, joka lukee viisi lukua ja tulostaa kunkin luvun alkuperäisenä ja pyöristettynä. Toteuta ohjelma omana funktiona, jota kutsutaan main-funktiosta.
Tehtävä 26. floor-funktiota voi käyttää pyöristämään luvun halutun desimaalin kohdalta. Esimerkiksi y = floor( x * 10 + 0.5) / 10; pyöristää kymmenesosat eli esimerkiksi luku 8.547390 pyöristyy luvuksi 8.5. Tee ohjelma, jossa määritellään neljä funktiota, jotka pyöristävät parametrinä saamansa luvun. Funktiot ovat: a) pyoristakokonaisluvuksi( luku ) b) pyoristakymmenesosat( luku ) c) pyoristasadasosat( luku ) d) pyoristatuhannesosat( luku ) Ohjelmassa luetaan lukuja ja kukin luku tulostetaan sellaisenaan ja pyöristettynä kullakin em. funktiolla. Tehtävä 27. Määrittele funktio hypotenuusa joka laskee suorakulmaisen kolmion hypotenuusan pituuden. Funktio saa parametrinä kaksi reaalilukua, jotka esittävät kolmion kahta muuta sivua. Funktio palauttaa reaalilukuna laskemansa hypotenuusan arvon.
Tehtävä 28. Kirjoita funktio korotakokonaislukupotenssiin( luku, potenssi ) siten että se laskee arvon luku potenssi ja palauttaa arvon kutsujalle. Esimerkiksi korotakokonaislukupotenssiin(3, 4) laskee tulon 3 * 3 * 3 * 3. Oleta että potenssi on positiivinen nollaa suurempi kokonaisluku ja luku on kokonaisluku. Älä käytä valmiita kirjastofunktioita potenssiin korotuksessa. Tee ohjelma jossa luetaan luku ja potenssi ja kutsutaan siteen em. funktiota. Lopuksi tulostetaan tulos sopivasti muotoiltuna. Tehtävä 29. Kirjoita funktio, joka saa parametrinä kolme kokonaislukua, parametrit kuvaavat kellonaikaa, tunteja minuutteja ja sekunteja. Funktio palauttaa syötetyn ajan sekunneiksi muutettuna. Käytä tätä funktiota ohjelmassa, jossa luetaan kaksi kellonaikaa ja lasketaan aikojen välinen erotus, joka tulostetaan kuvaruudulle.
Tehtävä 30. Täydellinen luku on positiivinen kokonaisluku, joka on positiivisten tekijöidensä summa. Tekijöihin ei tällöin lueta lukua itse. Täydellisiä lukuja ovat esimerkiksi 6 ja 28, koska 1 + 2 + 3 = 6 ja 1 + 2 + 4 + 7 + 14 = 28. Kirjoita funktio taydellinen, joka tutkii onko sen parametrina saama positiivinen kokonaisluku täydellinen luku. Käytä funktiota ohjelmassa, joka tutkii luvut 1 1000 ja ilmoittaa, mitkä em. luvuista ovat täydellisiä lukuja. Ps. jakojäännösoperaattorista % on (taas)hyötyä. Tehtävä 31. Kirjoita funktio joka saa parametrinä positiivisen kokonaisluvun väliltä 1-9999 ja palauttaa luvun käännettynä. Esim. 1379 palautuisi lukuna 9731. Kirjoita pääohjelma, jossa luetaan käyttäjältä luku, joka välitetään funktiolle. Lopuksi tulostetaan alkuperäinen luku ja käännetty luku. Tehtävä 32. Kirjoita ohjelma, joka simuloi rahan heittoa. Ohjelma heittää rahaa 100 kertaa ja kirjaa tulokset ylös ja tulostaa kruunujen ja klaavojen lukumäärät. Rahan heitto tulee toteuttaa funktiolla joka palauttaa luvun 0, jos heiton tulos on kruunu ja luvun 1, jos heiton tulos on klaava. Rahan heittoon voi käyttää satunnaislukufunktiota rand, joka löytyy kirjastosta stdlib.h. Satunnailukufunktio alustetaan ennen käyttöä komennolla srand (time(null )), jossa timelöytyy kirjastosta time.h.
Tehtävä 33. Kirjoita ohjelma, joka auttaa ala-asteen oppilaita laskemaan kertolaskuja luvuilla 1-9. Ohjelma esittää kysymyksen, johon käyttäjä vastaa. Kysymykset ovat muotoa: Anna luku 1 lopettaaksesi Paljonko on 5 kertaa 3? 15 Oikein! Anna luku 1 lopettaaksesi Paljonko on 9 kertaa 7? 62 Väärin, yritä uudelleen > 63 Oikein! Ohjelma tutkii onko vastaus oikein vai väärin ja antaa palautteen. Jos vastaus on väärä, ohjelma esittää saman kysymyksen uudelleen, kunnes vastaus on oikea. Käytä satunnaislukuja tehtävien tuottamiseen. Ohjelman suoritus päättyy, kun käyttäjä syöttää luvun 1. Tehtävä 34. Muokkaa tehtävää 33. siten että ohjelma arpoo satunnaiesti joko kertolaskutehtäviä tai jakolaskutehtäviä. Jakolaskutehtävien tulee olla sellaisia, että tuloksena on kokonaisluku. Tehtävä 35. Muokkaa tehtävää 34, siten että ohjelma pitää kirjaa oikeiden ja väärien vastausten määristä ja antaa lopuksi arvosanan. Saat itse päättää arvosteluasteikon.
Tehtävä 36. Kirjoita arvuutuspeli, jossa ohjelma pyytää käyttäjää arvaamaan lukua väliltä 1 1000. Ohjelma arpoo arvattavan luvun ja lukee käyttäjän vastauksen. Ohjelma vastaa käyttäjälle: 1. Arvasit oikein! Haluatko yrittää uudelleen (vastaa k, jos haluat jatkaa ja e jos et halua jatkaa peliä)? 2. Liian pieni luku, yritä uudelleen. 3. Liian suuri luku, yritä uudelleen. Jos vastaus on väärä, ohjelma pyytää uutta vastausta, kunnes käyttäjä vastaa oikein. Tehtävä 37. Kirjoita funktio, joka saa parametrinä kuukauden järjestysnumeron (1-12), funktio laskee ko. kuukauden päivien lukumäärän ja palauttaa arvon kutsujalle. Virheellisen kuukauden numeron yhteydessä funktio palauttaa arvon -1. Funktion esittely on: int paivienlukumaarakuukaudessa(int kk); Kuukaudessa on päiviä seuraavasti: Tammikuu 31 Maaliskuu 31 Toukokuu 31 Heinäkuu 31 Elokuu 31 Lokakuu 31 Joulukuu 31 Helmikuu 28 Huhtikuu 30 Kesäkuu 30 Syyskuu 30 Marraskuu 30
Kirjoita funktiolle pääohjelma, joka kysyy käyttäjältä kuukauden ja tulostaa annetun kuukauden päivien lukumäärän. Tehtävä 38. Karkausvuosi on pääsääntöisesti joka neljäs vuosi, mutta kuitenkin niin, että täydet vuosisadat (eli sadalla jaolliset vuodet) eivät ole karkausvuosia muulloin kuin joka 400. vuosi (eli vuosi on jaollinen 400:lla). Esimerkiksi vuodet 1700, 1800 ja 1900 eivät olleet karkausvuosia, mutta 2000 oli. Tee ohjelma, joka lukee käyttäjältä vuosiluvun, ohjelma ilmoittaa onko ko. vuoksi karkausvuosi. Käytä karkausvuoden päättelyyn funktiota, joka saa parametrinä tutkittavan vuosiluvun. Tehtävä 39. Kirjoita ohjelma, jossa käyttäjä syöttää kaksi päiväystä (vuosi, kuukausi ja päivä) kokonaislukuna, ohjelma laskee montako päivää on ko. ajankohtien välillä on. Ota huomioon myös mahdolliset karkausvuodet. Voit olettaa, vuodet ovat väliltä 1901 2007.