Advertisement
jukaukor

Lukujarjestelmat.jl

Jan 1st, 2023
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. # Lukujärjestelmien muunnokset
  2. # Juhani Kaukoranta 1.1.2023
  3. function MuunnosNtoM(nluku,origin,goal)
  4. # muuntaa origin-kantaisen luvun 10-kantaiseksi ka goal-kantaiseksi
  5. kymppi = MuunnosNto10(nluku,origin) # 10-kantaiseksi
  6. tulos = Muunnos(kymppi,goal) # 10-kantaisen goal-kantaiseksi
  7. println(origin,"-kantainen ",nluku," = 10-kantaisena ",kymppi)
  8. println(origin,"-kantainen ",nluku," = ",goal,"-kantaisena ",tulos)
  9. end
  10.  
  11. function MuunnosNto10(nluku,n)
  12. # muuntaa n-kantaisen luvun nluku 10-kantaiseksi luvuksi
  13. nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  14. m = length(nluku)
  15. s = big(0)
  16. for i = 1 : m
  17. j = findfirst(nluku[i],nro)-1
  18. s += j*big(n)^(m-i)
  19. end
  20. return s # palauttaa 10-kantaisen luvun
  21. end
  22.  
  23. function Muunnos(a,m)
  24. # muuntaa 10-kantaisen luvun a m-kantaiseksi luvuksi
  25. # a muunnettava 10-jarjestelmän luku, m kohdekantaluku
  26. nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  27. # merkistönumerot, vastaavat arvoja 0 - 62
  28. A ="" # merkkijonoon A kerätään uuden kantaluvun numerot
  29. x = a
  30. temp = div(x,m)
  31. while temp >= 0
  32. if x-temp*m < 62
  33. newnum = nro[x-temp*m+1]
  34. else
  35. newnum = string(x-temp*m)
  36. end
  37. A = newnum*A
  38. x = temp
  39. temp = div(x,m)
  40. if temp == 0 # viimeinen, uusi kierros
  41. if x < 62
  42. newnum = nro[x+1]
  43. else
  44. newnum = string(x)
  45. end
  46. A = newnum*A
  47. return A
  48. end
  49. end
  50. end
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement