C-ohjelmointi
syksy 2009
Harjoitus 5
Ilmoita moodlessa kurssin alueella harjoitustyöaiheesi 12.10 mennessä.
Jos teet työn ryhmässä, niin silloin yksi ryhmän jäsenistä ilmoittaa työn
nimen ja ryhmän jäsenten nimet. Ryhmässä voi olla 2-3 opiskelijaa.
Kirjautuessasi ensimmäistä kertaa kurssin moodle-alueelle
tarvitset sanaa htyo.
Kokeeseen saa ottaa yhden A4-arkin kokoisen muistilapun, jonka voi
täyttää molemmin puolin.
Tehtävät
käsitellään harjoitustilaisuuksissa 6-12.10.2009
-
Tee harjoitustyöhösi liittyvä moduuli joko yksin tai ryhmäsi kanssa.
Esimerkiksi jokin tietorakenne, jota tarvitset työssäsi.
-
Tee pääohjelma, jonka avulla testaat moduuliasi.
Palauta tehtävät 1 ja 2 moodleen. Näistä saat yhteensä maksimissaan kaksi pistettä.
Näistä tehtävistä saat vertaispalautetta seuraavalla viikolla.
- Kirjoita funktio sumave, jolla on vaihteleva määrä
parametreja. Ensimmäisenä parametrina annetaan lukumäärä, joka kertoo
kuinka monta double arvoa vielä seuraa. Funktio varaa tilan tietueelle,
jossa palautetaan parametrina annettujen double arvojen summa ja
keskiarvo. Funktio palauttaa osoitteen kysyiseen tietueeseen.
- (Kirjan tehtävä 11-12)
Binääritiedostoa "fname" käytetään tallentamaan tietoa
työntekijöistä. Jokaisesta työntekijästä on talletettuna nimi,
identifikaatiotunnus ja palkka:
struct employee {
long id;
char name[50];
double salary;
};
Kirjoita seuraavat funktiot:
-
int add (fname, empId, stringName, salary), missä
fname on merkkijono, joka kertoo binääritiedoston nimen,
empId on kokonaisluku,
stringname on merkkijono ja
salary on double.
Tämä funktio lisää uuden työntekijän binääritiedostoon (empId on
avain ja se identifioi yksikäsitteisesti työntekijän)
-
void moreDollars (fname, empId, incr), missä
fname on merkkijono, joka kertoo binääritiedoston nimen,
empId on kokonaisluku ja
incr on double.
Tämä funktio käyttää binääritiedostoa fname ja lisää parametrin
incr ilmoittaman määrän verran kaikkien niiden työntekijöiden
palkkaa,
joiden identifikaatiotunnus on yhtäsuuri tai suurempi kuin empId.
-
void show (const char *fname), kirjoittaa näkyviin kaiken
binääritiedostoon fname tallennetun tiedon,
- (Kirjan tehtävä 12-3)
Kirjoita tietotyyppi Elem, johon voi tallentaa joko kokonaisluvun
tai merkin (mutta ei molempia).
Kirjoita ohjelma joka lukee arvoja standardisyöttövirrasta. Kun
ohjelma löytää kokonaislukuja, se tallentaa ne taulukkoon, joka koostuu
Elem-tyyppisistä alkioista. Jos lukeminen epäonnistuu, ohjelma lukee
yhden merkin ja tallettaa sen taulukkoon. Tämän jälkeen ohjelma jatkaa
prosessointia.
Lukeminen päättyy kun löytyy tiedoston loppu tai 100 alkiota on luettu.
Ohjelmasi tulostaa käänteisessä järjsetyksessä kaikki kokonaisluvut,
jotka on talletettu.
Jos syöte on
12 b3 6g
taulukkoon talletetaan
12
b
3
6
g
ja tulostetaan
6 3 12
-
Kirjoita funktio min, jolla on kolme parametria, kaksi double
arvoa x ja y ja funktioparametrina
double funktio f(double).
Funktio min palauttaa pienemmän arvoista
f(x) ja f(y). Kirjoita myös funktio min1,
joka muuten samanlainen kuin funktio min, mutta se palauttaa
pienimmän arvon neljännessä parametrissa. Testaa funktiot.
.
Ohjausaikoina opittavia asioita:
- Esimerkki SDL-kirjaston käytöstä
- Merkkien luokittelufunktiot ja merkkijono-operaatiot
- Taulukko esimerkki (Esim. 10.2 maxMin)