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.
 

1.7 KiB

3 Luvunetsintä

Tehtävä:

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.

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.

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 (%).

Toimiessaan oikein ohjelma tulostaa seuraavaa:

Example output:

Anna aloituspaikka:
100
100 ei kelpaa...
101 ei kelpaa...
102 ei kelpaa...
103 ei kelpaa...
104 ei kelpaa...
Sopiva luku löytyi: 105

Vastaus

#!/usr/bin/env ruby
# coding: utf-8
def jaonTarkistus(luku, jakajat)
i = 0
for jakaja in jakajat
if (luku.to_f % jakaja) == 0
i += 1
end
end
if i == jakajat.length
puts "Sopiva luku löytyi: #{luku}"
return true
else
puts "#{luku} ei kelpaa..."
return false
end
end
begin
puts "Anna aloituspaikka:"
paikka = Integer(gets.strip.chomp)
rescue ArgumentError
warn "Anna kokonaisluku"
retry
end
while true
if jaonTarkistus(paikka, jakajat)
Process.exit(0)
end
paikka += 1
end