elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] Función que suma números positivos mayores a 32 bits. v1.2
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] Función que suma números positivos mayores a 32 bits. v1.2  (Leído 4,272 veces)
0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
[Batch] Función que suma números positivos mayores a 32 bits. v1.2
« en: 14 Abril 2009, 09:29 am »

:: Hice este código debido al problema que tuvo Leo con la sucesión de Fibonacci.


::
Código:
@echo off

setlocal

call :suma 777777777777777777777777  9999999999999999999999999999
echo. 777777777777777777777777 + 9999999999999999999999999999 = %suma%


call :suma 777777777777777777777777 + 9999999999999999999999999999
echo. 777777777777777777777777 + 9999999999999999999999999999 = %suma%

pause

endlocal
goto :eof

::suma dos numeros positivos.
::version 1.2
::Recibe dos numeros en formato de cadena de caracteres.
::Uso:
::call :suma  2147483647 +  10002147483648
::o
::call :suma  2147483647  10002147483648
::Almacena el resultado en la variable suma
::util para sumar numeros mayores a 2147483647 (limite positivo. el rango de 32 bits en cmd solo permite numeros entre -2147483648 y 2147483647 )
::En windows nt y 2000 las cadenas de variables tiene un largo de maximo de 2047 caracteres, y en xp y superior: 8191.
::programado a la rapida por 0x0309
:suma
setlocal enableextensions enabledelayedexpansion
for /f "delims=+ tokens=1,2" %%a in ("%~1+%~2+%~3") do (
set primerNumero=%%a
set segundoNumero=%%b
)

call :len %primerNumero%
set /a lenPrimerNumero=%tam%
call :len %segundoNumero%
set /a lenSegundoNumero=%tam%
if %lenPrimerNumero% gtr %lenSegundoNumero% (
set mayor=primerNumero
set /a len=%lenPrimerNumero%-1
set menor=segundoNumero
) else (
set /a len=%lenSegundoNumero%-1
set mayor=segundoNumero
set menor=primerNumero
)
set /a diferencia=!len%mayor%!-!len%menor%!
set "loQueFalta="
for /l %%a in (1,1,%diferencia%) do (set loQueFalta=!loQueFalta!0)
set %menor%=%loQueFalta%!%menor%!
set /a reserva=0
set "suma="
:ciclo
for /F %%a in ("primerNumero:~!len!,1") do set digitoUno=!%%a!
for /F %%a in ("segundoNumero:~!len!,1") do set digitoDos=!%%a!
set /a sumaDigitos=!digitoUno!+!digitoDos!+!reserva!
set /a digitoResultante=!sumaDigitos!%%10
set /a reserva=!sumaDigitos!-!digitoResultante!
set /a reserva /=10
set suma=!digitoResultante!!suma!
set /a len -=1
if !len! geq 0 goto ciclo
if !reserva! gtr 0 (set suma=!reserva!!suma!)
(
endlocal
set suma=%suma%
)
goto :eof
:len
setlocal
set /a contl=0
set wordl=%~1
:loopl
if not defined wordl (goto endl)
set wordl=%wordl:~1%
set /a contl +=1
goto loopl
:endl
endlocal & set /a tam=%contl%
goto :eof

::


« Última modificación: 14 Abril 2009, 19:33 pm por 0x0309 » En línea

M a t t

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: [Batch] Función que suma números positivos mayores a 32 bits. v1.2
« Respuesta #1 en: 14 Abril 2009, 23:39 pm »

Muy bueno, como siempre.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Contar numeros positivos
Programación C/C++
karmi 2 3,322 Último mensaje 10 Diciembre 2010, 18:46 pm
por do-while
[BATCH]Suma y resta números de cualquier longitud
Scripting
Binary_Death 1 3,678 Último mensaje 24 Julio 2012, 11:22 am
por BatchianoISpyxolo
C: Encontrar los 2 numeros mayores
Programación C/C++
dmacias 9 12,564 Último mensaje 8 Octubre 2019, 13:21 pm
por K-YreX
Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
Programación C/C++
grego027 9 4,512 Último mensaje 17 Agosto 2014, 23:03 pm
por cascaradebanana
suma de los elementos mayores a 100 en un array c/Recursividad
Programación C/C++
adriana13 6 2,703 Último mensaje 20 Octubre 2018, 21:40 pm
por adriana13
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines