Rästitehtävä 2

Tuntitilastot (350 p)

Tällä rästitehtävällä voit korvata yhden kierroksista 4, 5 tai 6. Jos sinulta puuttuu minimipisteet kahdelta näistä kierroksista, sinun pitää tehdä sekä tämä tehtävä että rästitehtävä 1 tai 3. Jos sinulta puuttuu minimipisteet kaikilta näiltä kierroksilta, tee rästitehtävät 1, 2 ja 3. Jotta rästitehtävä korvaisi tehtäväkierroksen, siitä on saatava vähintään 300 pistettä. Jos saat tästä rästitehtävästä vähintään 300 pistettä, niin tällä tehtävällä korvatun kierroksen pistemääräksi lasketaan harjoitusarvosanaa määrättäessä korvattavan kierroksen minimipistemäärä. Rästitehtävällä ei voi nostaa hyväksytyn kierroksen pistemäärää.

Tässä tehtävässä käytetään kaksiulotteisia listoja, joista on kerrottu tarkemmin 16.2.2011 pidetyllä luennolla.

Tee Eclipseen uusi projekti, jonka nimi on tehtava10_2. Luo sitten tähän projektiin moduuli tyotunnit ja kirjoita siihen ohjelma, jonka avulla käyttäjä voi laskea tilastoja opiskelijoiden harjoitustehtäviin käyttämistä työtunneista. Tarkempi selostus ohjelman vaatimuksista on alempana.

Eräällä kurssilla pidetään kirjaa siitä, kuinka monta tuntia opiskelija on käyttänyt kunkin harjoitustehtävän tekemiseen. Tässä tehtävässä on kirjoitettava ohjelma, joka lukee harjoitustuntitilastot ja laskee sitten yksittäiseen tehtävään käytettyjen työtuntien keskiarvon sekä kunkin opiskelijan yhteistuntimäärän.

Kirjoita ohjelmaasi seuraavat funktiot:

Kirjoita lisäksi pääohjelma, joka pitää huolen siitä, että seuraavat asiat tehdään annetussa järjestyksessä. Pääohjelma kutsuu tarvittaessa muita funktioita toimintojen tekemiseen.

  1. Pyytää käyttäjältä tehtävien lukumäärän
  2. Pyytää käyttäjältä tiedot tehdyistä työtunneista.
  3. Tulostaa eri tehtävien työtuntien keskiarvot.
  4. Tulostaa eri opiskelijoiden kokonaistyötunnit.

Ohjelmasi ei tarvitse varautua siihen, että käyttäjä antaa lukuja pyydettäessä esimerkiksi merkkijonoja tai tehtävien lukumäärää pyydettäessä negatiivisen luvun. Testaa ohjelmaasi ajamalla sitä itse monta kertaa ennen tehtävän palautusta. Palauta Gobliniin tiedosto tyotunnit.py.

Huomautus: Ohjelman voisi helposti kirjoittaa myös ilman funktiota hae_tehtavan_tunnit. Funktiosta on kuitenkin hyötyä silloin, jos ohjelmaa halutaan myöhemmin laajentaa laskemaan myös muita tehtäväkohtaisia tilastoja, esimerkiksi tehtävän työtuntien mediaaneja.

Esimerkkejä ohjelman suorituksesta:

[ohjelman suoritus alkaa]
Ohjelma laskee tilastoja opiskelijoiden tyotunneista.
Anna tehtavien lukumaara.
4
Anna opiskelijoiden tyotunnit tehtavittain,
yhden opiskelijan tiedot samalla rivilla.
Lopeta tyhjalla rivilla.
3.5 1.2 4.5 8.0
2.1 7.9 4.0 0.0
5.1 2.6 0.0 3.9
2.1 11.7 2.6 0.0
4.5 6.1 4.1 7.2


Tyotuntien keskiarvot tehtavittain
Nro  tunnit (h)
 1.   3.46
 2.   5.90
 3.   3.80
 4.   6.37
Opiskelijoiden kayttamat kokonaistyotunnit
Nro kokonaistunnit (h)
 1.  17.20
 2.  14.00
 3.  11.60
 4.  16.40
 5.  21.90
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa]
Ohjelma laskee tilastoja opiskelijoiden tyotunneista.
Anna tehtavien lukumaara.
3
Anna opiskelijoiden tyotunnit tehtavittain,
yhden opiskelijan tiedot samalla rivilla.
Lopeta tyhjalla rivilla.
2.1 3.2 4.4 0.0
virheellinen rivi: 2.1 3.2 4.4 0.0
2.1 3.2
virheellinen rivi: 2.1 3.2
2.1 3.2 0.0


Tyotuntien keskiarvot tehtavittain
Nro  tunnit (h)
 1.   2.10
 2.   3.20
 3.   0.00
Opiskelijoiden kayttamat kokonaistyotunnit
Nro kokonaistunnit (h)
 1.   5.30
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa]
Ohjelma laskee tilastoja opiskelijoiden tyotunneista.
Anna tehtavien lukumaara.
4
Anna opiskelijoiden tyotunnit tehtavittain,
yhden opiskelijan tiedot samalla rivilla.
Lopeta tyhjalla rivilla.


Tyotuntien keskiarvot tehtavittain
Nro  tunnit (h)
 1.   0.00
 2.   0.00
 3.   0.00
 4.   0.00
Opiskelijoiden kayttamat kokonaistyotunnit
Nro kokonaistunnit (h)
[ohjelman suoritus päättyy]

Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta