Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- object Jakokulma extends App {
- def virhe(msg: String) = throw new Error(msg)
- def lue(msg: String) = { val r = readLine(msg).toInt; println(r); r }
- val jaettava = lue("Anna jaettava:")
- val jakaja = lue("Anna jakaja:")
- if (jaettava < 0 || jakaja < 0)
- virhe("Voidaan jakaa vain positiivisia lukuja")
- if (jaettava < jakaja)
- virhe("Jakaja suurempi, jää " + jaettava)
- var tulos = ""
- var tulos2 = ""
- println
- def jaa(vaihe: Int, nollia: Boolean, jakaja: Int, välitulos: String, jaettava: List[Char]) {
- if (jaettava.isEmpty) {
- tulos += ", jää "+välitulos
- return
- }
- val p :: h = jaettava
- val a = (välitulos :+ p).toInt
- val vo = a / jakaja
- val vj = a % jakaja
- val tn = nollia | vo>0
- tulos += (if (tn) vo else " ")
- val k1 = a.toString.size
- val k2 = (a-vj).toString.size
- val k3 = vj.toString.size
- val k = Integer.max(k1,k2)
- tulos2 += (" "*(vaihe+k-k1+2-k1+1) + a) + "\n"
- tulos2 += (" "*(vaihe-k1+1) + "- " + " "*(k-k2)+(a-vj)) + "\n"
- tulos2 += (" "*(vaihe-k1+1) + "-"*(k+2)) + "\n"
- tulos2 += (" "*(vaihe+k-k3+2-k1+1) + vj) + "\n"
- jaa(vaihe+1, tn, jakaja, vj.toString, h)
- }
- val k = jakaja.toString.size
- val k2 = jaettava.toString.size
- jaa(k-1, false, jakaja, "", jaettava.toString.toList)
- println(" "*(k+1)+tulos)
- println(" "*k+","+ "_"*(k2))
- println(jakaja+"|"+jaettava)
- println(tulos2)
- }
- ---
- Anna jaettava:2342934
- Anna jakaja:73
- 32094, jää 72
- ,_______
- 73|2342934
- 2
- - 0
- ---
- 2
- 23
- - 0
- ----
- 23
- 234
- - 219
- -----
- 15
- 152
- - 146
- -----
- 6
- 69
- - 0
- ----
- 69
- 693
- - 657
- -----
- 36
- 364
- - 292
- -----
- 72
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement