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!
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.
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.
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.
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).
.