Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: kraszic en 28 Agosto 2007, 13:05 pm



Título: Numeros decimales en batch
Publicado por: kraszic en 28 Agosto 2007, 13:05 pm
Pues eso mismo, estaba intentando hacer un programilla con batch q convirtiera los nudos a km/h y la regla es q habia q multiplicar por 1.85 pero cuando lo he probado me he dado cuenta de q batch no acepta ese tipo de numeros, habria alguna manera de poder hacer eso o almenos de aproximar ese valor???

saludos


Título: Re: Numeros decimales en batch
Publicado por: Asalta_Hacker en 28 Agosto 2007, 13:36 pm
Solo acia falta mirar en www.google.es pero weno mira te lo expliko, mira este codigo k encontre de un tal binario; normalmente tu creas las variables asi "set /p nombre=...." pero si la variable son numeros decimales o una suma multiplicacoin.. es conveniente hacerlo asi
"set /a nombre=...." creo que es asi... si no en hazlo en C k tienes las mismas funciones k en batch y mas.


Código:
@echo off
REM *** CALCULADORA POSTFIJA PARA DOS OPERANDOS ***
REM ***********************************************
color f5
:ini
cls
echo        C A L C U L A D O R A
echo        =====================
echo.
echo Ingrese dos numeros y uno de estos operandos [+ ,- , * ,/ ]
echo o "q" para salir
set /p num1=
if "%num1%"=="q" goto salida
set /p num2=
set /p caract=
set /a a=num1
set /a b=num2
if "%caract%"=="+" goto suma
if "%caract%"=="-" goto resta
if "%caract%"=="*" goto mult
if "%caract%"=="/" goto div
reM ---------- SUMA -------------
:suma
set /a Suma=%a%+%b%
echo La Suma es %suma%
echo.
pause>nul
color 05
goto ini
REM --------- RESTA -------------
:resta
set /a resta=%a%-%b%
echo La Resta es %resta%
echo.
pause>nul
color f0
goto ini
REM --------- MULTIPLICACION ------
:mult
set /a mult=%a%*%b%
echo La Multiplicacion es %mult%
echo.
pause>nul
color 0e
goto ini

REM --------- DIVISION ------
:div
if "%num2%"=="0" goto error
set /a div=%a%/%b%
echo La Division es %div%
echo.
pause>nul
color 0f
goto ini

REM ----- ERROR AL DIVIDIR ENTRE CERO -----
:error
ECHO *** NO SE PUEDE DIVIDIR POR CERO ****
pause>nul
color
goto ini

rem ------- salida ----------
:salida
cls
color f1
echo.
echo.
echo.
echo ***********************************
echo  ** copyright [ B 1 N A R 1 0 ] **
echo ***********************************
pause>nul
exit

batch


Título: Re: Numeros decimales en batch
Publicado por: kraszic en 28 Agosto 2007, 15:36 pm
Solo acia falta mirar en www.google.es pero weno mira te lo expliko, mira este codigo k encontre de un tal binario; normalmente tu creas las variables asi "set /p nombre=...." pero si la variable son numeros decimales o una suma multiplicacoin.. es conveniente hacerlo asi
"set /a nombre=...." creo que es asi... si no en hazlo en C k tienes las mismas funciones k en batch y mas.
google es muy buen buscador pero hay q comprovar q la informacion q te de sea correcta ya q muchas veces no lo es...
Si hubieras leido el post completo, el tal binario pregunta despues como hacer para q la calculadora lea numeros decimales...

Posteo mi codigo por si hay algun fallo en cualquier otra cosa, el problema es q me gustaria hacer el programa en bat y no en C y me gustaria saber si existe algun modo de hacerlo.

Código:
@echo off

title -- NUDOS A KILOMETROS POR HORA / KILOMETROS POR HORA A NUDOS
:menu
cls
echo --------------------------MENU----------------------------------
echo,
echo 1. Nudos a km/h
echo 2. Km/h a nudos
echo,
echo 3. Salir

echo,
echo,
echo,

set /p opt=Selecciona un numero:
if %opt%==1 goto nudos
if %opt%==2 goto km
if %opt%==3 goto salir

:nudos
cls
echo NUDOS A KILOMETROS POR HORA
echo,
set /p nud=Introduce la cantidad en nudos:
set /a multn=%nud% * 1.85
echo,
echo %nud% nudos equivalen a %multn%km/h
echo,
echo,
echo,
echo,
echo,
echo Pulse cualquier tecla para volver al menu
pause>nul
goto menu

:km
cls
echo Kilometros por hora a nudos
echo,
set /p k=Introduce la cantidad de km/h:
set /a multK=%K% / 1.85
echo,
echo %K%km/h equivalen a %multk% nudos
echo,
echo,
echo,
echo,
echo,
echo Pulse cualquier tecla para volver al menu
pause>nul
goto menu

:salir
cls
exit

saludos

PD: Cuando quieres realizar operaciones siempre hay q utilizar el "/a"