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.

65 lines
1.7 KiB

4 years ago
  1. ## 3 Luvunetsintä
  2. **Tehtävä:**
  3. Luvun kolmas tehtävä on yksinkertainen luvunetsintäohjelma. Tee ohjelma, joka ensin pyytää käyttäjältä kokonaisluvun syötteellä "Anna aloituspaikka:". Tämän jälkeen ohjelma alkaa läpikäymään lukuja käyttäjän antamasta aloituspaikasta eteenpäin.
  4. Ohjelman tehtävänä on etsiä luku, joka on jaollinen luvuilla 3, 5 ja 7, eli siten että [luku] / [3, 5 tai 7] menee aina tasan ja tuottaa desimaalittoman (esim. 6.0, 1724) . Jos testattava luku ei mene tasan, tulostetaan "[luku] ei kelpaa..." ja siirrytään seuraavaan lukuun. Kun sopiva luku löytyy, tulostetaan "Sopiva luku löytyi: [luku]" ja lopetetaan ohjelma siihen paikkaan.
  5. Kannattaa huomata, että käytävien kierrosten määrää on hyvin vaikea ennustaa etukäteen, joten ohjelma kannattaa toteuttaa toistonohjauksen avulla. Lisäksi ohjelmaa tehtäessä kannattaa tutustua jakojäännös-operaattoriin (%).
  6. Toimiessaan oikein ohjelma tulostaa seuraavaa:
  7. Example output:
  8. ```
  9. Anna aloituspaikka:
  10. 100
  11. 100 ei kelpaa...
  12. 101 ei kelpaa...
  13. 102 ei kelpaa...
  14. 103 ei kelpaa...
  15. 104 ei kelpaa...
  16. Sopiva luku löytyi: 105
  17. ```
  18. **Vastaus**
  19. ```
  20. #!/usr/bin/env ruby
  21. # coding: utf-8
  22. def jaonTarkistus(luku, jakajat)
  23. i = 0
  24. for jakaja in jakajat
  25. if (luku.to_f % jakaja) == 0
  26. i += 1
  27. end
  28. end
  29. if i == jakajat.length
  30. puts "Sopiva luku löytyi: #{luku}"
  31. return true
  32. else
  33. puts "#{luku} ei kelpaa..."
  34. return false
  35. end
  36. end
  37. begin
  38. puts "Anna aloituspaikka:"
  39. paikka = Integer(gets.strip.chomp)
  40. rescue ArgumentError
  41. warn "Anna kokonaisluku"
  42. retry
  43. end
  44. while true
  45. if jaonTarkistus(paikka, jakajat)
  46. Process.exit(0)
  47. end
  48. paikka += 1
  49. end
  50. ```