C-ohjelmointi kevät 2006


Harjoitus 1

Tehtävät käsitellään keskiviikon 8.2.2006 harjoitustilaisuuksissa 12-14 salissa B222 ja 14-16 salissa CK107.
Vain tietokoneella koetellut ratkaisut kelpaavat!

  1. Kirjoita ohjelma, joka laskee 10 vuodeksi otetun 200 000 euron asuntolainan kuukausittaiset lainahoitokustannukset, kun laina on otettu annuiteettilainana. Tämä tarkoittaa sitä, että joka kuukausi maksettavan koron ja lyhennyksen yhteissumma on sama. Voit olettaa, että korko pysyy samana koko laina-ajan. Laske kuukausierä eri vuosikoroille välillä 3% - 10% yhden prosenttiyksikön välein.
    Annuiteettilainan kuukausierä voidaan laskea kaavalla:

    	 kuukausierä = r ^ n * p/ (1200 * (r^n -1)) *A,  
    	           missä r = 1 + p/1200
    	                 p = vuosikorko prosenteina, 
    			 n = lainan takaisinmaksukuukausien määrä,
    	                 A = alkuperäisen lainan määrä  
    			 ^ tarkoittaa potenssiin korotusta.
    
    Potenssin laskemiseen voit käyttää kirjastofunktiota double pow(double x, double y), joka on kirjastossa math.h.

  2. Tee ohjelma, joka laskee opintopistemäärällä painotetun keskiarvon opiskelijan saamista arvosanoista. Kunkin opiskelijan kaikki suoritustiedot ovat omassa tiedostossa siten, että yhdellä rivillä on aina yksi opintosuoritus muodossa:

     
    	kurssin nimi   kurssin opintopistemäärä  arvosana      suorituspvm
    	
            C-ohjelmointi           4                   3            31052004     
    	                                                        
    	
    Ohjelma kysyy ensin tiedoston nimeä ja tulostaa tähän tiedostoon talletettujen suoritusten arvosanojen painotetun keskiarvon.
  3. Kirjoita makro ISOK, joka antaa tulokseksi nollasta poikkeavan luvun, jos merkki on iso kirjain ja muuten arvon nolla. Kirjoita vastaava makro PIENIK. Kirjoita vastaava makro ISOK_TAI_PIENIK käyttäen makroja ISOK ja PIENIK.

  4. Tekstitiedostosto koottu tekstinpätkistä, joista osa on kirjoitettu käyttäen pelkästään isoja kirjaimia, osa pelkästään pieniä kirjaimia. Tee ohjelma, joka siistii tiedoston siten, että siinä on iso kirjain vain lauseen alussa ja muu teksti pienillä kirjaimilla. Ohjelma tunnistaa lauseen 1. kirjaimen siitä, että sitä edeltää joko piste, kysymysmerkki tai huutomerkki. Muut erikoistapaukset voit jättää käsin muutettaviksi. Ohjelmasi ei tarvitse myöskään muuttaa skandinaavisia aakkosia (å, ä, ö).

    Käytä tässä hyväksi edellisen tehtävän makroja, älä siis kirjastofunktioita (int islower(int c), int isupper(int c)). Sen sijaan kirjaimien muuttamiseen isoista pieniksi ja pienistä isoiksi voit käyttää kirjastofunktioita int tolower(int c) ja int toupper(int c).



.