Error: no se esperaba / en este momento

Iniciado por Jamjize, 26 Mayo 2017, 04:55 AM

0 Miembros y 1 Visitante están viendo este tema.

Jamjize

Tengo un problema con mi codigo chicos y no se donde esta :(
Código (DOS) [Seleccionar]

@echo off
title Programa-36
color a

set /p m=Ingrese el monto:
if %m% LEQ 500 (
echo no hay descuento
pause>nul
exit
)
if %m% GTR 500 if %m% LEQ 1000 (
set /a mf=(%m% * 5) / 100
set /a mf=%m% - %mf%
goto 1
)
if %m% GTR 1000 if %m% LEQ 7000 (
set /a mf=(%m% * 11) / 100
set /a mf=%m% - %mf%
goto 1
)
if %m% GTR 7000 if %m% LEQ 15000 (
set /a mf=(%m% * 18) / 100
set /a mf=%m% - %mf%
goto 1
) else (
set /a mf=(%m% * 18) / 100
set /a mf=%m% - %mf%
:1
echo el cliente debe pagar $%mf%
pause
exit
)


Este el diagrama de flujo para que puedan guiarse


Lo raro es que si pongo un echo en unos de los if funciona bien pero se muestra toda la condicion :(



y perdonen de nuevo no se usar las etiquetas GeSHi :'(
si alguien pudiera decirme como publicarlas con ellas para el lenguaje Batch en este foro en un futuro me coregire solo :(

Muchas gracias de antemano :)

Eleкtro

#1
Los mensajes de error que empiezan por "no se esperaba X en este momento" indican un error sintáctico en el código. Debes encerrar la declaración de variable entre comillas dobles. Es básico. O en su defecto eliminar los paréntesis de la expresión aritmética. Aparte de eso, deberías activar la expansión de variables.

Ejemplo:

Código (dos,1,4,5) [Seleccionar]
@Echo Off & SetLocal EnableDelayedExpansion
...
if %m% GTR 1000 if %m% LEQ 7000 (
SET /A "mf=(%m% * 11) / 100"
SET /A "mf=%m% - !mf!"
GoTo :1
)
...

Sigue el mismo ejemplo en todos los bloques de las condicionales del código que has mostrado.

Por último, veo que eres una persona "esquemática" y metódica, por ese motivo creo que no está de más aconsejarte o advertirte de que estás desaprovechando todo tu potencial con un "lenguaje" como Batch.

Cita de: Jamjize en 26 Mayo 2017, 04:55 AMsi alguien pudiera decirme como publicarlas con ellas para el lenguaje Batch en este foro en un futuro me coregire solo :(

[code=dos] Deposite su código aquí. [/code]

¡Saludos!








Jamjize

Ya esta muchas gracias por la solucion al problema, tendre en cuenta todo desde ahora y otra cosa, salio otro error :(

Lo que imprime la consola:
Ingrese el monto: 700
Falta un operando.
el cliente debe pagar $35
Presione una tecla para continuar . . .

segun el codigo ingrese 700 y la ecuacion realizo: "700 * 5 / 100 " y luego no hizo la resta de "700 - 35"
por que falta el 35 en la ecuacion :(

Eleкtro

Cita de: Jamjize en 26 Mayo 2017, 05:55 AMpor que falta el 35 en la ecuacion :(

No has seguido correctamente las indicaciones que te he mostrado. Fíjate bien en las lineas de código que resalté, estoy usando la expansión de variable: !mf!, sin embargo probablemente tú estés usando el símbolo de variable %.

Haz eso, como lo indiqué. O en su defecto también puedes hacer:  Call set /a "mf=%m% - %%mf%%"

¡Saludos!








Jamjize

Waaa muchas gracias Eleкtro de enserio gracias por ayudarme! un abrazo crack!