|
|
- ## 2 Monta valintaehtoa
-
- **Tehtävä:**
-
- Luvun toisessa tehtävässä tehdään ohjelma, joka käsittelee koordinaatistoa. Tee ohjelma, joka pyytää käyttäjältä X-akselin ja Y-akselin arvot kokonaislukuina. Tämän jälkeen tee ohjelmaan valintarakenne, joka päättelee missä kohtaa 10*10-koordinaatistoa käyttäjä on:
-
- Jos X- ja Y-arvo on pienempi kuin 5, tulostetaan "Olet vasemmassa alakulmassa.". Jos X on pienempi, mutta Y suurempi tai yhtäsuuri kuin 5, tulostetaan "Olet vasemmassa yläkulmassa.". Vastaavasti X >=5 ja Y < 5 tulostaa "Olet oikeassa alakulmassa." ja molempien ollessa viisi tai enemmän, "Olet oikeassa yläkulmassa.". Lisäksi, jos jompikumpi luvuista on pienempi kuin nolla, tulostetaan "Annoit negatiivisen arvon.".
-
- Toimiessaan oikein ohjelma tulostaa seuraavaa:
-
- Example output:
-
- ```
- Valitse x-akselin arvo väliltä 0-9: 2
- Valitse y-akselin arvo väliltä 0-9: -6
- Annoit negatiivisen arvon.
- ```
-
- **Vastaus**
-
- ```
- #!/usr/bin/env ruby
- # coding: utf-8
-
- def tarkistaSyote(kysymys, virheviesti, tyyppi, strip=false, *arvovali)
- begin
- print kysymys
- if strip
- syote = eval(tyyppi + "(gets.chomp).strip")
- else
- syote = eval(tyyppi + "(gets.chomp)")
- end
-
- if tyyppi == "Integer" && arvovali[0]
-
- if syote < 0
-
- # Enforced by assignment description
- return syote
-
- elsif syote < arvovali[0][0] || syote > arvovali[0][1]
- throw ArgumentError
- end
- end
-
- rescue ArgumentError
- warn virheviesti
- retry
- end
- return syote
- end
-
- ##########
-
- def valitseKoordinaatti(akseli)
-
- arvovali = [0,9]
-
- return tarkistaSyote("Valitse #{akseli}-akselin arvo väliltä #{arvovali[0]}-#{arvovali[1]}: ",
- "Syötteesi oli virheellinen.",
- "Integer",
- false,
- arvovali
- )
- end
-
- ##########
-
- x = valitseKoordinaatti("x")
- y = valitseKoordinaatti("y")
-
- if x < 0 or y < 0
- puts "Annoit negatiivisen arvon."
- elsif x < 5 and y < 5
- puts "Olet vasemmassa alakulmassa."
- elsif x < 5 and y >= 5
- puts "Olet vasemmassa yläkulmassa."
- elsif y < 5 and x >= 5
- puts "Olet oikeassa alakulmassa."
- elsif y >= 5 and x >= 5
- puts "Olet oikeassa yläkulmassa."
- end
- ```
|