html>C-ohjelmointi, laskuharj. 1

C-ohjelmointi syksy 1999

Harjoitus 2 (27.9.-1.10.1999)

Tee C-ohjelmasi heti alusta alkaen tietokoneella. Pisteitä jaetaan vain tietokoneella koetelluista ratkaisuista. Varmistaudu ohjelmasi toimivuudesta kääntämällä ja suorittamalla sitä, tarpeen mukaan erilaisilla testiaineistoilla. Vältä sellaisten piirteiden käyttöä harjoituksissa, joita ei vielä ole käsitelty kurssilla.

1. Kirjoita ohjelma, joka laskee vuosittaiset asuntolainan hoitokulut eli yhdistetyt lyhennys- ja korkokulut. Lainaa lyhennetään kerran vuodessa vuoden lopussa tasasummalla. Korko vaihtelee jäljellä olevan pääoman mukaan. Ohjelma pyytää käyttäjältä lainasumman, laina-ajan ja korkoprosentin sekä tulostaa lainahoitokulut eri vuosina.

2. Kirjoita funktio int samat (eka[], toka[]), joka testaa onko merkkijono eka sama kuin toka. Funktio palauttaa kokonaisluvun 1 jos merkkijonot ovat samat, muuten kokonaisluvun 0.

3. Kirjoita funktio int lueluku(), joka lukee syötteenä annetun merkkimuotoisen kokonaisluvun (esim. 200, 153, 32) ja palauttaa luvun arvon. Varaudu korkeintaan 8 merkin mittaisiin merkkijonoihin. Jos merkkijono ei ole kokonaisluku, niin funktio palauttaa -1.

4. Tee funktio int alkuluku( int luku), joka ilmoittaa, onko parametrina annettu luku alkuluku vai ei. Luku on alkuluku, jos se on jaollinen vain itsellään ja ykkösellä. Tee lisäksi pääohjelma, joka lukee syötteestä luvun n ja tulostaa kaikki alkuluvut väliltä 1-n käyttäen apuna funktiota alkuluku. Lukemiseen voit käyttää joko edellisen tehtävän funktiotasi tai jotain opppikirjan esimerkkifunktiota. Voit olettaa, että n on tyyppiä int.

5. Kirjoita funktio int itob(int n, char s[], int b), joka muuntaa luvun n merkkijonoksi kantaluvussa b. Kantaluvun b on oltava välillä 2-36. Funktio palauttaa kirjoitetun merkkijonon pituuden tai -1, jos kantaluku on laiton. Kirjoita sitten ohjelma, joka tulostaa syötteenä saadun luvun kaikissa kantaluvuissa välillä 2-36.

6. Kirjoita ohjelma, joka lukee kaksi päiväystä muodossa pp.kk.vvvv ja ilmoittaa niiden välisen eron päivinä. Ota ratkaisussasi huomioon myös karkausvuodet. Vuosi on karkausvuosi, jos se on jaollinen neljällä. Kuitenkin sadalla jaollisista vuosista karkausvuosia ovat vain neljälläsadalla jaolliset vuodet.