C-ohjelmointi syksy 2008


Harjoitus 6

Tehtävät käsitellään harjoitustilaisuuksissa 9-13.10

  1. Muokkaa harjoituksen 5 tehtäviä 1 ja 2 siten, että käytät modulaarista ohjelmointia. Tapahtumajonon toteutus tulee omaan moduliinsa. Lisää myös koodiin assert:in avulla ehtoja, joilla varmistut ohjelman oikeasta loogisesta toiminnasta.
  2. Kirjoita funktio, joka etsii merkkijonosta tiettyä merkkiä. Funktiolle annetaan parametreina merkkijono ja merkki. Funktio palauttaa arvonaan osoittimen merkkijonon ensimmäiseen sellaiseen merkkiin, jota etsitään. Ellei etsittävää merkkiä löydy, funktio palauttaa arvon NULL. Kirjoita funktiolle myös käyttöympäristö eli pääohjelma, josta kutsut sitä.

  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. Tee ohjelma etsi, joka saa  komentoriviparametrina tiedoston nimen ja merkkijonon (etsi tied1 C-kieli). Ohjelma tulostaa kaikki ne tiedoston rivit, joilla annettu merkkijono esiintyy.

.