C-ohjelmointi syksy 2006


Harjoitus 2

Tehtävät käsitellään harjoitustilaisuuksissa 14.9 TO 12-14 salissa B119 ja 15.9 PE 12-14 salissa B119.

  1. Mitä seuraava ohjelma tulostaa. Perustele vastauksesi.
    int main() {
       double x = 16.5;
       double y = 2.5;
       int z = 0;
    
       while(x > y) {
          x -= y;
          z++;
       }
    
       printf("%d %g\n", z, x);
    
       return EXIT_SUCCESS;
    }
    
  2. Kirjoita ohjelma, joka lukee kokonaisluku arvon n pienempi kuin 10 ja tulostaa kertotaulun yhdestä n:n. Muista virhetarkistukset. Esimerkiksi jos n:n arvo on 3, ohjelman pitäisi tulostaa
        1   2   3
    1   1   2   3
    2   2   4   6
    3   3   6   9
    
  3. Kirjoita ohjelma, joka laskee 10 vuodeksi otetun 150 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.

  4. 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.

.