|
|
- ## 1 Yksinkertainen valinta, laskin
-
- **Tehtävä:**
-
- Ensimmäisessä tehtävässä kootaan laskin, jolla on kolme mahdollista toimintatapaa. Aloitetaan ohjelma sillä, että pyydetänä käyttäjältä kaksi syötettä tekstillä "Anna 1. luku:" ja "Anna 2. luku:" , jotka tallennetaan kahteen eri muuttujaan, ja muutetaan ne liukuluvuiksi tyyppimuunnoksella. Tämän jälkeen esitetään käyttäjälle vaihtoehdot muodossa "(Y)hteen-, (V)ähennys- vai (K)ertolasku?" ja tallennetaan käyttäjän valinta kolmanteen muuttujaan.
-
- Jos käyttäjä antoi syötteen "Y", lasketaan syötetyt arvot yhteen. Jos "V", vähennetään ne toisistaan ja jos "K", kerrotaan ne keskenään. Lopuksi annetaan vastaus "Tulos on [vastaus]". Jos käyttäjä ei valitse joko "Y", "V" tai "K", tulostetaan teksti "Virheellinen valinta." Ohjelma lopetetaan kun vastaus on tulostettu, ja lisksi voidaan olettaa, että käyttäjä ymmärtää antaa numeroarvoksi muuntuvan syötteen lukuihin, sekä ymmärtää, että laskutoimituksen valinta tehdään käyttäen isoja kirjaimia.
-
- Toimiessaan oikein ohjelma tulostaa seuraavaa:
-
- Example output:
-
- ```
- Anna 1. luku:
- 2
- Anna 2. luku:
- 3
- (Y)hteen-, (V)ähennys- vai (K)ertolasku?
- K
- Tulos on 6.0
- ```
-
- **Vastaus**
-
- ```
- #!/usr/bin/env ruby
- # coding: utf-8
-
- def tarkistaSyote(kysymys, virheviesti, tyyppi, strip=false)
- begin
- print kysymys
- if strip
- syote = eval(tyyppi + "(gets.chomp).strip")
- else
- syote = eval(tyyppi + "(gets.chomp)")
- end
-
- rescue ArgumentError
- warn virheviesti
- retry
- end
- return syote
- end
-
- def pyydaLuku(luku)
- return tarkistaSyote("Anna #{luku}. luku: \n",
- "Et antanut kelvollista valintaa.",
- "Integer"
- )
- end
-
- def laskuToimitus(luku1, luku2)
-
- input = tarkistaSyote("(Y)hteen-, (V)ähennys- vai (K)ertolasku?\n",
- "Et antanut kelvollista valintaa.",
- "String"
- )
-
- luku1 = luku1.to_f
- luku2 = luku2.to_f
-
- case input.upcase
- when "Y", "YHTEEN"
- t = luku1 + luku2
- when "V", "VÄHENNYS"
- t = luku1 - luku2
- when "K", "KERTOLASKU"
- t = luku1 * luku2
- else
- warn "'#{input}' ole sopiva vaihtoehto"
- t = "tuntematon"
- end
- puts "Tulos on #{t}"
- end
-
- laskuToimitus(pyydaLuku(1), pyydaLuku(2))
- ```
|