## 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 ```