Power of number limitless

Announce and discuss the progress of your various programming-related projects...programs, games, websites, tutorials, libraries...anything!

Moderators: Pete, Mods

Post Reply
lrcvs
Veteran
Posts: 58
Joined: Mon Mar 10, 2008 9:28 am

Power of number limitless

Post by lrcvs »

declare sub b.store (cad$, n$)
declare sub c.pizarra ()
declare sub d.encabezados (a$, b$)
declare sub e.multiplicacion (a$, b$)
declare sub g.suma ()
declare function f.invcad$ (cad$)

'this program, calculates the power of a number
'without limit, with results accurate.
'if the number is greater than 100 will slow.
'the result is displayed.

cls
input "numero a elevar a una potencia = "; a$
z$ = a$
input "potencia = "; v
b$ = a$
cls
for n = 2 to v
a$ = z$
locate 1, 1: print n
call b.store(a$, "a")
call b.store(b$, "b")
call c.pizarra
call d.encabezados(a$, b$)
call e.multiplicacion(a$, b$)
call g.suma
open "i", #3, "r"
10 :
if eof(3) then goto 20
input #3, r$
goto 10
20 :
close (3)


'aqui limpiamos el resultado
'we clean the result
b$ = ""
lr = len(r$)
gg = 0
for qq = 1 to lr
ss$ = mid$(r$, qq, 1)
if val(ss$) > 0 then gg = 1
if gg = 1 then b$ = b$ + mid$(r$, qq, 1)
next qq
next n

cls
print z$; " e"; v; " = "
print b$
print
print "long = "; len(b$)

end

sub b.store (cad$, n$)
'aqui guardamos los datos en un fichero
'here we keep the data in a file
open "o", #1, n$
for m = len(cad$) to 1 step -1
write #1, mid$(cad$, m, 1)
next m
close (1)
end sub

sub c.pizarra
'iniciamos la pizzara
'init the blackboard
open "a", #3, "r"
write #3, ""
close (3)
kill "r"
end sub

sub d.encabezados (a$, b$)
'aqui escribimos los datos en el fichero final
'write data in the end file
'variables
'lt :num,longitud total del multiplicando + multiplicador
'l$ :tex, cadena patron
lt = 0
lt = len(a$) + len(b$) + 1
'escribimos el multiplicando
l$ = string$(lt, " ")
open "a", #3, "r"
mid$(l$, lt - len(a$) + 1) = a$
write #3, l$
close (3)
'escribimos el multiplicador
l$ = string$(lt, " ")
open "a", #3, "r"
mid$(l$, lt - len(b$) - 1) = "x " + b$
write #3, l$
close (3)
end sub

sub e.multiplicacion (a$, b$)
'aqui hacemos la multiplicacion
'do the multiplication
'variables
'lt : num, longitud total del multiplicando + multiplicador
'rp : num, resultado parcial
'acum$ : tex, acumulador de las multiplicaciones
'ls : tex, cadena patron
'c$ : tex, cadena de texto del resultado parcial
'd$ : tex, valor de las unidades
'e$ : tex, valor de lo que nos llevamos
lt = 0
lt = len(a$) + len(b$) + 1
l$ = string$(lt, " ")
c$ = ""
d$ = ""
e$ = ""
ct1 = 1
acum$ = ""
open "i", #2, "b"
while eof(2) <> -1
input #2, b$
open "i", #1, "a"
while eof(1) <> -1
input #1, a$
c$ = ltrim$(str$((val(a$) * val(b$)) + val(acum$)))
if eof(1) <> -1 then d$ = d$ + right$(c$, 1)
if eof(1) = -1 then d$ = d$ + f.invcad$(c$)
acum$ = ltrim$(str$(val(left$(c$, len(c$) - 1))))
wend
close (1)
mid$(l$, lt - ct1 - len(d$) + 2) = f.invcad$(d$)
open "a", #3, "r"
write #3, l$
close (3)
l$ = string$(lt, " ")
acum$ = ""
c$ = ""
d$ = ""
e$ = ""
ct1 = ct1 + 1
wend
close (2)
end sub

function f.invcad$ (cad$)
'aqui invertimos una cadena de texto
'reversing a string
'variables
'lcad : num, longitud cadena entrante
'cadtem$ : tex, acumulador cadena temporal
lcad = len(cad$)
cadtem$ = ""
for cad = lcad to 1 step -1
cadtem$ = cadtem$ + mid$(cad$, cad, 1)
next cad
f.invcad$ = cadtem$
end function

sub g.suma
'aqui sumamos la multiplicacion
'do the addition
'variables
'cf: num, contador del numero de filas
'an: num, longitud del registro
'st: num, resultado parcial
'acus$: tex, acumulador de las que nos llevamos
'k: num, contador de filas
'w$: tex, resultado final
'r$: tex, registro

'aqui calculamos el ancho del registro
'we estimate the width of record
cf = 0
open "i", #3, "r"
while eof(3) <> -1
input #3, r$
cf = cf + 1
an = len(r$)
wend
cf = cf - 2
close (3)

w$ = ""
st = 0
acus$ = ""
for p = 1 to an
k = 0
open "i", #3, "r"
while eof(3) <1> 2 then st = st + val(mid$(r$, an - p + 1, 1))
if k > 2 then m$ = ltrim$(str$(st + val(acus$)))
wend
w$ = w$ + right$(m$, 1)
acus$ = ltrim$(str$(val(left$(m$, len(m$) - 1))))
close (3)
st = 0
next p

'aqui escribimos el resultado en el fichero
'we write the result in the end file
open "a", #3, "r"
write #3, " " + right$(f.invcad(w$), an - 1)
close (3)
end sub
Post Reply