C-ohjelmointi
syksy 2008
Harjoitus 5
Kokeeseen saa ottaa yhden A4-arkin kokoisen muistilapun, jonka voi
täyttää molemmin puolin.
Tehtävät
käsitellään harjoitustilaisuuksissa 2-6.10.2008
-
Tee tapahtumajonon toteutus.
Tapahtumajonossa ovat kaikki tapahtumat (asiakas saapui palveltavaksi, asiakas
poistui palvelupisteestä jne.) niiden aikajärjestyksessä. Jono on
tunnussolmullinen yksisuuntaisesti linkitetty lista. Mieti mitä
operaatioita tarvitset ja toteuta ne.
-
Tee pääohjelma, jonka avulla testaat tapahtumajonoasi.
- Kirjoita funktio minmax, 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 minimi- ja
maksimiarvo. Funktio palauttaa osoitteen kysyiseen tietueeseen.
- (Kirjan tehtävä 8-8)
Kirjoita funktio maxi, jolla on kolme parametria, kaksi double
arvoa x ja y ja funktioparametrina
double funktio f(double).
Funktio maxi palauttaa suuremman arvoista
f(x) ja f(y). Kirjoita myös funktio max1,
joka muuten samanlainen kuin funktio maxi, mutta se palauttaa
suurimman arvon neljännessä parametrissa. Testaa funktiot.
- (Kirjan tehtävä 8-10)
Kirjoita funktio
void PrintGen(const void *block, size_t elemSize, size_t blockSize,
void (*printIt) (const void*));
joka tulostaa kaikki lohkon alkiot käyttäen "callback" funktiota
printIt. Testaa ohjelmasi käyttäen lohkoa, jossa on double arvoja
ja lohkoa, jossa on viitteitä double arvoihin.
- (Kirjan tehtävä 8-12)
Toteuta geneerinen moduuli Sets, joka edustaa järjestettyä
kokoelmaa (joukko, dublikaatit eivät ole sallittuja).
Moduulilla pitää olla operaatiot,
joilla lisätään alkio kokoelmaan ja poistetaan alkio kokoelmasta. Lisää
kokoelman läpikäynti. Testaa moduuliasi kokoelmalla, jossa on alkioina
double-arvoja ja kokoelmalla, jossa on alkioina kokonaislukuja.
.