C-ohjelmointi
kevät 2006
Harjoitus 6
Tehtävät
käsitellään keskiviikon 29.3.2006
harjoitustilaisuuksissa 12-14 salissa C221 ja 14-16 salissa
B119.
Vain tietokoneella koetellut ratkaisut
kelpaavat! Kun pyydetään tekemään
funktio, niin laadi myös pääohjelma, jolla
testaat funktion toimintaa.
-
Kirjoita funktio, joka järjestää
parametrina annetun kokonaislukutaulukon alkiot nousevaan
järjestykseen.
- Kirjoita funktio reversed_copy(),
joka saa parametrina taulukon ja palauttaa parametrina taulukon,
jossa taulukon alkiot ovat käännetyssä
järjestyksessä: alkuperäisen taulukon ensimmäinen
alkio on nyt viimeisenä ja viimeinen ensimmäisenä.
Funktio ei siis muuta alkuperäistä taulukkoa, vaan tekee
siitä kopion, jonka palauttaa parametrina.
- Kirjoita ohjelma, joka lukee
opiskelijan suoritukset komentoriviparametrina annetusta tiedostosta
taulukkoon. Kullakin rivillä on kurssin nimi, sen
opintopistemäärä, arvosana ja päivämäärä.
Ohjelma tulostaa tiedot ja laskee opintosuoritusten painotetun
arvosanan. Arvosanat ovat 1-5 ja kurssin nimessä voi olla
välilyöntejä. Opintosuoritusten haluttu
tulostusjärjestys annetaan komentoriviparametrina: ilmoitetaan
kenttä, jonka perusteella opintosuoritukset järjestetään
ja etumerkillä ilmoitetaan, halutaanko suoritukset kentän
perusteella nousevassa (+) tai laskevassa järjestyksessä (-).
Esimerkiksi annetaan komentorivillä ohjelma opinnot +3 , jos halutaan tulostaa tiedostossa opinnot olevat
opintosuoritukset kentän kolme eli arvosanan mukaan nousevassa järjestyksessä.
Jaa ohjelmasi sopivasti funktioihin.
-
Kirjoita funktio, joka lukee
parametrina annetusta tiedostosta 'mielivaltaisen' pituisen
rivin ja palauttaa osoittimen
puskuriin, johon rivi on talletettu. Jos talletus ei onnistu, niin
funktio palauttaa arvon -1. Käytä funktiota realloc()
tarvittaessa lisätilan varaamiseen, mutta käytä sitä
järkevästi.