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