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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  un if con cálculos múltiples[BATCH]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: un if con cálculos múltiples[BATCH]  (Leído 3,035 veces)
trolleoatodos

Desconectado Desconectado

Mensajes: 29


Ver Perfil
un if con cálculos múltiples[BATCH]
« en: 21 Agosto 2013, 09:59 am »

Buenas ,soy un nuevo user , el nick es en honor a otro user jajajaj
LLevo toda la noche y ahora en la mañana intentando rular un code , en java
fue fluido ,peroen batch no me sale buf
me salían cosas como poner en la cmd
Código:
set var=7 && echo %var%
y me salía %var% , pero luego ya en la segunda ejecusion ya me salía 7
Aparte lo más importante , tengo un if que quiero que evalúe y calcule y antes
que muestre un dato que es una variable que es la mitad que otra tal que así
Código:
set mitad=%a/2 ::Esta parte funciona ,veo en la cmd 30/2 por ej
echo %mitad%::Esta NO ,muestra %mitad% o 0 o sale Echo está activado
if %mitad% == ((%a-1)*3 -(%a+30))  echo La respuesta es %a
y ya en batch
Código:
set mitad=%%a/2
echo %%mitad%% ::MISMO error qu arriba ..
if %%a == "((%%a-1)*3 -(%%a+30))"  echo La respuesta es %%a
El code está dentro de un for ,gracias por leer jajajaj


En línea

Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.775



Ver Perfil
Re: un if con cálculos múltiples[BATCH]
« Respuesta #1 en: 21 Agosto 2013, 10:43 am »

Solución al primer problema:

Código
  1. Set /A "VAR=7" 1>NUL & call echo %VAR%

En el resto del código, hay varias cosas mal.

1. Cuando setees valores numéricos usa el switch "/A" en el comando set:
Código
  1. set /A "Var=0"

2. Si estás dentro de un if o un for es por eso que no te puede mostrar el contenido de la variable "%mitad%", debes habilitar la expansión de variables y usar la sintaxis correcta:

Código
  1. SetLocal EnableDelayedExpansion
  2. echo !mitad!

...O bien usar el comando call como más arriba he comentado.

3.
Citar
Código:
if %%a == "((%%a-1)*3 -(%%a+30))"

Esto no es Java :P, desconozco el valor que tiene la variable del for pero me imagino que es un número, así que estás intentando comparar un número con un string:
Código:
if numero == "número"

4.
Citar
Código:
((%%a-1)*3 -(%%a+30))

Repito lo mismo de antes, Batch es tán limitado que no puedes hacer ese tipo de operaciones de la manera en la que lo estás haciendo, pues no es Java.

No agrupes los números, y no uses números, usa variables, es decir, primero calculas el valor de la operación y lo seteas en una variable, pero no lo intentes calcular así diréctamente en la expresión de la comparación, y luego ya comparas una variable con la otra.

Código
  1.  
  2. :: Primero seteas la operación aritmética que quieras:
  3. Set /A "Valor= 1 * 3 - 3"
  4. :: Y luego comparar variable con variable:
  5. If %%a EQU %Valor% () ELSE ()

Saludos!


« Última modificación: 21 Agosto 2013, 10:48 am por EleKtro H@cker » En línea


trolleoatodos

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: un if con cálculos múltiples[BATCH]
« Respuesta #2 en: 21 Agosto 2013, 13:20 pm »

Buenas gracias por tu ayuda PERO no me sale , por ahora conseguí esto :
Código:
@echo on
SetLocal EnableDelayedExpansion::setlocal enabledelayedexpansion
echo la mitad de los años que tiene ahora es igual al triple de los años que tenía el
echo año pasado  restandole los años de ahora que tendrá dentro de 30

echo %edad%
for /L %%a IN (1,1,30) DO (
set mitad=nul
set /a mitad=%%a/2
set /a edad=%%a
set /a edadmenosun=%edad%-1
set /a tripl=%edadmenosun%*3
set /a segundomiembr=edad+30
set /a aftermath=tripl-segundomiembr
call echo %mitad% ::Sale echo está activado y si pongo !mitad! sale echo !mitad! y ahora no sale nada
::if %%a == "((%%a-1)*3 -(%%a+30))"  echo La respuesta es %%a :: el segundomiembr es (%%a+30)
if %aftermath% EQU %mitad% echo "LA respuesta es "%%a
)
pause>nul

Por lógica matématica el número ganador es el 22
En línea

Meine programmen

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: un if con cálculos múltiples[BATCH]
« Respuesta #3 en: 21 Agosto 2013, 13:52 pm »

Si no me equivoco, lo que quieres hacer es que el .bat pruebe con los numeros del 1 al 30 hasta que encuentre la solucion. En ese caso podrias calcular con un solo set /a cada una de las partes y luego compararlas, algo asi:
Código:
@echo off
echo la mitad de los años que tiene ahora es igual al triple de los años que tenía el
echo año pasado  restandole los años de ahora que tendrá dentro de 30
for /L %%a in (1,1,30) do (set edad=%%a
call :Etiqueta)
:Salida
echo La solucion es %edad%
pause>nul
exit

:Etiqueta
set /a expresion1=%edad%/2
set /a expresion2=3*(%edad%-1)-(%edad%+30)
if %expresion1% equ %expresion2% (goto Salida)
goto:eof
En línea

REMEMBER! Reality is an illusion, the universe is a hologram, BUY GOLD! BYE!!

trolleoatodos

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: un if con cálculos múltiples[BATCH]
« Respuesta #4 en: 21 Agosto 2013, 14:14 pm »

¡GROSO! así que se hacía con calls y como se llaman a lo que llaman ¿subrutinas?
Ya tengo el code gracias de verdad yo soy programador java , aquí va el code en JAVA
Código:
public static void main(String[] args) {
int edadtemp;
for (int i= 0;i<99;i++){
edadtemp = i +30;
if ((i -1 )* 3 - edadtemp == i/2){
System.out.println("\""+i+"\""+" Es la respuesta");

}

}

}
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Ejecutar multiples procesos
Scripting
EagleOneRaptor 5 7,176 Último mensaje 9 Mayo 2009, 07:08 am
por leogtz
Multiples Bucles o Multiples Esperas
.NET (C#, VB.NET, ASP)
DarkMatrix 8 5,176 Último mensaje 5 Septiembre 2011, 23:11 pm
por EddyW
[BATCH] ¿Hacer calculos sexadecimales?
Scripting
Meine programmen 3 2,355 Último mensaje 3 Junio 2012, 06:14 am
por BatchianoISpyxolo
[Batch] Problema al leer múltiples niveles de subdirectorios
Scripting
z3nth10n 8 3,329 Último mensaje 26 Diciembre 2013, 17:47 pm
por z3nth10n
Crear contadores multiples en batch
Scripting
RafaelTheHacker372 2 3,178 Último mensaje 29 Diciembre 2020, 17:55 pm
por Mudereded401
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines