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
-
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.
-
Tee pääohjelma, jonka avulla testaat tapahtumajonoasi.
- (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
.
Palautettava kotitehtävä (yksi moduuli harjoitustyöstä):
-
Tee harjoitustyöhösi liittyvä moduuli ryhmäsi kanssa.
Esimerkiksi jokin tietorakenne, jota tarvitset työssäsi.
-
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:
- Merkkien luokittelufunktiot ja merkkijono-operaatiot
- Taulukot (Esim. 10.2 maxMin)