Advertisement
Guest User

Untitled

a guest
Jul 6th, 2015
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1.  
  2. object Jakokulma extends App {
  3. def virhe(msg: String) = throw new Error(msg)
  4. def lue(msg: String) = { val r = readLine(msg).toInt; println(r); r }
  5.  
  6. val jaettava = lue("Anna jaettava:")
  7. val jakaja = lue("Anna jakaja:")
  8.  
  9. if (jaettava < 0 || jakaja < 0)
  10. virhe("Voidaan jakaa vain positiivisia lukuja")
  11.  
  12. if (jaettava < jakaja)
  13. virhe("Jakaja suurempi, jää " + jaettava)
  14.  
  15. var tulos = ""
  16. var tulos2 = ""
  17.  
  18. println
  19.  
  20. def jaa(vaihe: Int, nollia: Boolean, jakaja: Int, välitulos: String, jaettava: List[Char]) {
  21. if (jaettava.isEmpty) {
  22. tulos += ", jää "+välitulos
  23. return
  24. }
  25. val p :: h = jaettava
  26. val a = (välitulos :+ p).toInt
  27. val vo = a / jakaja
  28. val vj = a % jakaja
  29. val tn = nollia | vo>0
  30.  
  31. tulos += (if (tn) vo else " ")
  32.  
  33. val k1 = a.toString.size
  34. val k2 = (a-vj).toString.size
  35. val k3 = vj.toString.size
  36. val k = Integer.max(k1,k2)
  37. tulos2 += (" "*(vaihe+k-k1+2-k1+1) + a) + "\n"
  38. tulos2 += (" "*(vaihe-k1+1) + "- " + " "*(k-k2)+(a-vj)) + "\n"
  39. tulos2 += (" "*(vaihe-k1+1) + "-"*(k+2)) + "\n"
  40. tulos2 += (" "*(vaihe+k-k3+2-k1+1) + vj) + "\n"
  41.  
  42. jaa(vaihe+1, tn, jakaja, vj.toString, h)
  43. }
  44.  
  45. val k = jakaja.toString.size
  46. val k2 = jaettava.toString.size
  47.  
  48. jaa(k-1, false, jakaja, "", jaettava.toString.toList)
  49.  
  50. println(" "*(k+1)+tulos)
  51. println(" "*k+","+ "_"*(k2))
  52. println(jakaja+"|"+jaettava)
  53. println(tulos2)
  54. }
  55.  
  56. ---
  57.  
  58. Anna jaettava:2342934
  59. Anna jakaja:73
  60.  
  61. 32094, jää 72
  62. ,_______
  63. 73|2342934
  64. 2
  65. - 0
  66. ---
  67. 2
  68. 23
  69. - 0
  70. ----
  71. 23
  72. 234
  73. - 219
  74. -----
  75. 15
  76. 152
  77. - 146
  78. -----
  79. 6
  80. 69
  81. - 0
  82. ----
  83. 69
  84. 693
  85. - 657
  86. -----
  87. 36
  88. 364
  89. - 292
  90. -----
  91. 72
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement