|
|
- ## 2 Autonkulutuslaskuri
-
- **Tehtävä:**
-
- Luvun toisessa tehtävässä tehdään laskuri, jolla lasketaan paljonko autolla ajaminen tulee maksamaan bensan hinnassa mitattuna. Pyydetään ensiksi käyttäjältä kaksi syötettä "Anna autolla ajetut kilometrit: " sekä "Anna bensanhinta: ". Tämän jälkeen käyttäjä voi valita, onko matka maantie- vai kaupunkiajoa valinnalla "Onko matka (1) maantieajoa vai (2) kaupunkiajoa?: ".
-
- Oletetaan, että käyttäjän auto kuluttaa 5 litraa bensiiniä sadalla kilometrillä jos matka ajetaan maantiellä, ja 9 litraa jos matka ajetaan kaupungissa. Kun lukemat on tiedossa, lasketaan vastaus kaavalla (bensanhinta*kulutus litroina*matka kilmetreinä) / 100.0, ja tulostetaan se muodossa "Matka maksoi [tulos] euroa.". Ilmoitetaan tulos desimaalien tarkkuudella, joskaan vastausta ei tarvitse erikseen pyöristää. Lopuksi kysytään käyttäjältä "Lasketaanko toinen matka? (k/e): ". Jos käyttäjä valitsee "k", aloitetaan alusta. Jos "e", lopetetaan. Ohjelmassa voidaan olettaa, että käyttäjä syöttää ainoastaan oikeita lukuarvoja ja valitsee ainoastaan kelvollisia vaihtoehtoja.
-
- Toimiessaan oikein ohjelma tulostaa esimerkiksi seuraavaa:
-
- Example output:
-
- ```
- Anna autolla ajetut kilometrit: 140
- Anna bensanhinta: 1.44
- Onko matka (1) maantieajoa vai (2) kaupunkiajoa?: 2
- Matka maksoi 18.144 euroa
- Lasketaanko toinen matka? (k/e)?: e
- ```
-
- **Vastaus**
-
- ```
- #!/usr/bin/env ruby
- # coding: utf-8
-
- def tarkistaSyote(kysymys, tyyppi, strip=false)
- begin
- print kysymys
- if strip
- syote = eval(tyyppi + "(gets.chomp).strip")
- else
- syote = eval(tyyppi + "(gets.chomp)")
- end
-
- rescue ArgumentError
- warn "Syöttämäsi valinta ei ole kelvollinen"
- retry
- end
- return syote
- end
-
- def laskuri()
- km = tarkistaSyote("Anna autolla ajetut kilometrit: ", "Integer")
- hinta = tarkistaSyote("Anna bensanhinta: ", "Float")
- valinta = tarkistaSyote("Onko matka (1) maantieajoa vai (2) kaupunkiajoa?: ", "Integer")
-
- case valinta
- when 1
- kulutus = 5
- when 2
- kulutus = 9
- else
- warn "Tuntematon valinta"
- return
- end
-
- puts "Matka maksoi #{(hinta*kulutus*km)/100.0} euroa"
- end
-
- loop do
- laskuri
- print "Lasketaanko toinen matka? (k/e)?: "
- vastaus = String(gets.strip.chomp)
- case vastaus
- when "e"
- #Process.exit(0)
- break
- when "k"
- next
- else
- warn "Tuntematon valinta"
- end
- end
- ```
|