C-ohjelmointi syksy 2010


Harjoitus 5

Ilmoitakaa moodlessa kurssin alueella harjoitustyöaiheenne 5.10 mennessä. Riittää, että 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 avainta htyo. Kokeeseen saa ottaa yhden A4-arkin kokoisen muistilapun, jonka voi täyttää molemmin puolin.

Tehtävät käsitellään harjoitustilaisuuksissa 6-8.10.2010

  1. Tee tapahtumalistan toteutus. Tapahtumalistassa ovat kaikki tapahtumat (asiakas saapui palveltavaksi, asiakas poistui palvelupisteestä jne.) niiden aikajärjestyksessä. Lista on tunnussolmullinen yksisuuntaisesti linkitetty lista. Mieti mitä operaatioita tarvitset ja toteuta ne. Tietoa diskreetin ajan simuloinnista löytyy wikipediasta.
  2. Tee pääohjelma, jonka avulla testaat tapahtumajonoasi.
  3. (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:
    1. 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)
    2. 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.
    3. void show (const char *fname), kirjoittaa näkyviin kaiken binääritiedostoon fname tallennetun tiedon,

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

.

Palautettava kotitehtävä (yksi moduuli harjoitustyöstä):
  1. Tee harjoitustyöhösi liittyvä moduuli ryhmäsi kanssa. Esimerkiksi jokin tietorakenne, jota tarvitset työssäsi.

  2. Tee pääohjelma, jonka avulla testaat moduuliasi.

    Palauta tehtävät moodleen perjantaihin 8.10 mennessä. Näistä saat yhteensä maksimissaan kaksi pistettä. Näistä tehtävistä saat ja annat vertaispalautetta seuraavalla viikolla.

Opiskele itsenäisesti:
  1. Merkkien luokittelufunktiot ja merkkijono-operaatiot
  2. Taulukot (Esim. 10.2 maxMin)