Ruby fundamentals through coding exercises
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

2.3 KiB

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