Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Lukujärjestelmien muunnokset
- # Juhani Kaukoranta 1.1.2023
- function MuunnosNtoM(nluku,origin,goal)
- # muuntaa origin-kantaisen luvun 10-kantaiseksi ka goal-kantaiseksi
- kymppi = MuunnosNto10(nluku,origin) # 10-kantaiseksi
- tulos = Muunnos(kymppi,goal) # 10-kantaisen goal-kantaiseksi
- println(origin,"-kantainen ",nluku," = 10-kantaisena ",kymppi)
- println(origin,"-kantainen ",nluku," = ",goal,"-kantaisena ",tulos)
- end
- function MuunnosNto10(nluku,n)
- # muuntaa n-kantaisen luvun nluku 10-kantaiseksi luvuksi
- nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- m = length(nluku)
- s = big(0)
- for i = 1 : m
- j = findfirst(nluku[i],nro)-1
- s += j*big(n)^(m-i)
- end
- return s # palauttaa 10-kantaisen luvun
- end
- function Muunnos(a,m)
- # muuntaa 10-kantaisen luvun a m-kantaiseksi luvuksi
- # a muunnettava 10-jarjestelmän luku, m kohdekantaluku
- nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- # merkistönumerot, vastaavat arvoja 0 - 62
- A ="" # merkkijonoon A kerätään uuden kantaluvun numerot
- x = a
- temp = div(x,m)
- while temp >= 0
- if x-temp*m < 62
- newnum = nro[x-temp*m+1]
- else
- newnum = string(x-temp*m)
- end
- A = newnum*A
- x = temp
- temp = div(x,m)
- if temp == 0 # viimeinen, uusi kierros
- if x < 62
- newnum = nro[x+1]
- else
- newnum = string(x)
- end
- A = newnum*A
- return A
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement