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

  1. 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.
  2. Tee pääohjelma, jonka avulla testaat tapahtumajonoasi.
  3. 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.
  4. (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.

  5. (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.

  6. (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.

.