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.

61 lines
1.8 KiB

4 years ago
  1. ## 4 Oraakkeli
  2. **Tehtävä:**
  3. Luvun neljännessä tehtävässä harjoitellaan case-valinnan käyttöä, sekä luodaan arkielämää helpottava, erehtymätön, Oraakkeli-ohjelma. Ohjelma käynnistyy antamalla lyhyen selityksen itsestään: "Oraakkeli vastaa kyllä/ei-muodossa". Tämän jälkeen pyydetään käyttäjältä kysymys "Kirjoita kysymyksesi Oraakkelille:". Tämän jälkeen ohjelma arpoo luvun väliltä 0-99 ja vastaa käyttäjälle seuraavassa muodossa:
  4. "Kysymyksesi oli: [esitetty kysymys]", "Tähän Oraakkeli vastasi:" ja mikäli satunnaisluku oli 0-19, "Ei missään nimessä!", 20-44 "Ei varmaankaan", 45-54 "En osaa sanoa.", 55-79 "Luultavasti kyllä." ja 80-99 "Ehdottomasti kyllä".
  5. Toimiessaan oikein ohjelma tulostaa seuraavaa:
  6. Example output:
  7. ```
  8. Oraakkeli vastaa kyllä/ei-muodossa
  9. Kirjoita kysymyksesi Oraakkelille:
  10. Onko nyt hyvä päivä?
  11. Kysymyksesi oli: Onko nyt hyvä päivä?
  12. Tähän Oraakkeli vastasi:
  13. En osaa sanoa.
  14. ```
  15. **Vastaus**
  16. ```
  17. #!/usr/bin/env ruby
  18. # coding: utf-8
  19. puts "Oraakkeli vastaa kyllä/ei-muodossa\n\
  20. Kirjoita kysymyksesi Oraakkelille:"
  21. begin
  22. kysymys = String(gets.chomp)
  23. if not kysymys[-1] == "?"
  24. puts "Ei ole kysymys"
  25. throw ArgumentError
  26. end
  27. rescue ArgumentError
  28. warn "Syötteesi ei ole kelvollinen"
  29. retry
  30. end
  31. puts "Kysymyksesi oli: #{kysymys}"
  32. x = rand(0..99)
  33. case x
  34. when 0..19
  35. vastaus = "Ei missään nimessä!"
  36. when 20..44
  37. vastaus = "Ei varmaankaan"
  38. when 45..54
  39. vastaus = "En osaa sanoa."
  40. when 55..79
  41. vastaus = "Luultavasti kyllä."
  42. when 80..99
  43. vastaus = "Ehdottomasti kyllä."
  44. # else-vaihtoehto ei koskaan toteutuisi, mikäli x on aina väliltä 0-99,
  45. # ja edellämainitut tilanteet kattavat koko kyseisen arvovälin
  46. end
  47. print "Tähän Oraakkeli vastasi:\n#{vastaus}"
  48. ```