Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Geormarsch en 16 Octubre 2016, 05:37 am



Título: [AYUDA] Porcentaje de un número en Batch
Publicado por: Geormarsch en 16 Octubre 2016, 05:37 am
Hola, buenas, después de muchísimo tiempo de inactividad aquí estoy.
Más inútil que nunca jajaj  ;D

Tengo este script sencillo, que únicamente el objetivo de éste es obtener el porcentaje de un número y mostrarlo en pantalla.

En el fondo, por si no me expliqué bien, o mí código está malo(cosa que es muy probable, ya que no lo ejecuté porque estoy en Linux)
Pretendo consultar al usuario un número, por ejemplo 50.000
una vez teniendo esa cantidad, sacar 2% - 40% - 8% - 50% y mostrarlo en pantalla en el orden que puse en el script.

Código:
Fuerza     : 1.000
 Agilidad   : 20.000
 Vitalidad  : 4.000
 Energia    : 2.500

Mí consulta es la siguiente, cómo puedo ejecutar éste script en Linux, o cómo pasarlo a otro lenguaje compatible con Linux.
pensé en html y ver si podía subirlo a algún hosting gratuito. Pero a pesar de qué indague y pedí ayuda en el foro, no pude lograr nada.
Por eso recurro a ésta sección, ya que antiguamente hice alguno que otro aporte. que quizás a alguien le sirvio.



Dejo mí codigo!!!

Código
  1. @echo off
  2. title Stats
  3. :menu
  4. cls
  5. echo Ingresa Stats totales:
  6. set /p stats =
  7. echo Presiona Enter para obtener tus stats recomendados.
  8. goto calcular
  9.  
  10. :calcular
  11. cls
  12. REM LOS NÚMEROS AQUÍ SUPONEN UN PORCENTAJE
  13. set fuerza = 2
  14. set agilidad = 40
  15. set vitalidad = 8
  16. set energia = 50
  17. set porcieno = 100
  18. set /a fz=%stats% * %fuerza%
  19. set /a r1=%fz% / %porciento%
  20. set /a ag=%stats% * %agilidad%
  21. set /a r2=%ag% / %porciento%
  22. set /a vt=%stats% * %vitalidad%
  23. set /a r3=%vt% / %porciento%
  24. set /a ene=%stats% * %energia%
  25. set /a r4=%ene% / %porciento%
  26. echo Procesando...
  27. ping -n 3 localhost >nul
  28. echo Fuerza     : %r1%
  29. echo Agilidad   : %r2%
  30. echo Vitalidad  : %r3%
  31. echo Energia    : %r4%
  32. echo Presiona una tecla para volver al menu
  33. goto menu


PD: Elektro, espero que sigas aquí y puedas darme una manito.


EDIT:
Buenas noches gente!
Disculpen la hora de la publicación, soy Chileno y aquí apenas es media noche!!!


Título: Re: Ejecutar este script en Linux
Publicado por: engel lex en 16 Octubre 2016, 05:59 am
si sabes lo minimo de programación es simple pasarlo a ya sea c++, python, javascript (no es necesario el server, solo te creas un html y listo) que los 3 son compatibles nativamente en la mayor parte de los linux, con algunas modificaciones podrías dejarlo listo para bash

lo unico que tienes que saber es que lo que está entre %% son las variables antes declaradas


Título: Re: Ejecutar este script en Linux
Publicado por: Geormarsch en 16 Octubre 2016, 08:55 am
si sabes lo minimo de programación es simple pasarlo a ya sea c++, python, javascript (no es necesario el server, solo te creas un html y listo) que los 3 son compatibles nativamente en la mayor parte de los linux, con algunas modificaciones podrías dejarlo listo para bash

lo unico que tienes que saber es que lo que está entre %% son las variables antes declaradas

Ese es el problema, hace bastantes años atrás sólo aprendí Batch, hice un par de script, descubrí el ciclo del FOR y bueno, sólo eso tengo en mente, cómo podría ejecutar esa idea en Linux, si es en Bash, espero puedan instruirme por que desconozco.


Título: Re: Ejecutar este script en Linux
Publicado por: Geormarsch en 16 Octubre 2016, 09:08 am
Encontré la solución, ejecuté mediante Wine el script en .bat
el problema ahora es, cómo sacar porcentajes en batch... :o


Título: Re: [AYUDA] Porcentaje de un número en Batch
Publicado por: Eleкtro en 17 Octubre 2016, 10:40 am
Para sacar un porcentaje del número 50.000 podrías hacerlo así:

Código
  1. Set /A "num=50000"
  2. Set /A "percent=50"
  3.  
  4. Set /A "result=(%num%*%percent%) / 100"

¿Te refieres a ese tipo de operación, verdad?, si con eso te es suficiente entonces ok, pero de todas formas deberías tener en cuenta que la capacidad de Batch está limitada a un valor entero de 32 bits (2.147.483.647) y olvídate de operaciones con decimales... es preferible que lo hagas en Ruby u otro lenguaje multi plataforma como los que ya te han mencionado.

Saludos!


Título: Re: [AYUDA] Porcentaje de un número en Batch
Publicado por: Geormarsch en 18 Octubre 2016, 21:12 pm
Código
  1. Set /A "num=%numero%"
  2. Set /A "percent=%p1%"
  3.  
  4. Set /A "result=(%num% * %percent%) / 100"

Es viable setear una variable con otra variable??

Los números que el usuario introducirá, irán aumentando 300,
Por ejemplo el siguiente valor que el usuario podría introducir sería, 50.300, luego 50.600, 50.900 y así sucesivamente, crees que podría funcionar??

La idea de este script es para un juego, en el cual de un número total nos arroja esos porcentajes para repartir esos puntos a los stats del personaje, los cuales son los más "optimos"


Título: Re: [AYUDA] Porcentaje de un número en Batch
Publicado por: tincopasan en 18 Octubre 2016, 22:28 pm
perdón, ¿vale la pena tanto laburo en batch?  cuando podrías usar python(nativo en linux) o vbscript igual en windows. Donde ambos lenguajes proveen más funcionalidades.


Título: Re: [AYUDA] Porcentaje de un número en Batch
Publicado por: Eleкtro en 19 Octubre 2016, 00:38 am
Es viable setear una variable con otra variable??

Viable, sí, no hay problema en hacer eso que has hecho, pero todo incluso lo más sencillo carece de eficiencia al implementarlo en un lenguaje tan limitado como es Batch.

Desde el principio todos te hemos aconsejado que lo hagas en otro lenguaje, sencillamente deberías olvidarte de Batch no solo para este problema sino para todo lo demás, olvídalo de por vida y avanza un nivel para aprender lo básico de otro lenguaje, ¡solo lo básico he dicho!, con eso ya te sería más que suficiente y de mayor utilidad... mucho más útil que ignorar el consejo que se te ha dado desde el principio.

Aquí abajo puedes compprobar lo sencillo que sería el equivalente a ese Batch-script en Ruby, he intentado evitar estructurarlo correctamente y evitar modificarlo más de lo necesario al adaptarlo para que te resulte facil compararlo con el código original. El código es portable para Windows y Linux... o al menos debería (excepto el comando CHCP, no se como manejará la terminal de Linux las codificaciones de texto/sets de caracteres)

script.rb
Código
  1. #!/usr/bin/ruby
  2. # -*- coding: Windows-1252 -*-
  3. require 'io/console'
  4.  
  5. @stats = nil
  6.  
  7. def Main()
  8.    while true
  9.        SetUserInput()
  10.        puts('Presione cualquier tecla para continuar...')
  11.        STDIN.getch()
  12.  
  13.        CalcStats()
  14.        print('Presione cualquier tecla para volver al menú...')
  15.        STDIN.getch()
  16.    end
  17. end
  18.  
  19. def SetUserInput()
  20.    system("clear") or system('cls')
  21.    print('Ingrese el valor de estadísticas totales: ')
  22.    @stats = Integer(gets) rescue SetUserInput()
  23. end
  24.  
  25. def CalcStats()
  26.    # LOS NÚMEROS AQUÍ SUPONEN UN PORCENTAJE
  27.    strPct =  2
  28.    agiPct = 40
  29.    vitPct =  8
  30.    enePct = 50
  31.  
  32.    pctVal = 100
  33.  
  34.    str = (@stats * strPct) / (pctVal)
  35.    agi = (@stats * agiPct) / (pctVal)
  36.    vit = (@stats * vitPct) / (pctVal)
  37.    ene = (@stats * enePct) / (pctVal)
  38.  
  39.    # no deberías hacer esto de esperar 3 segundos intencionadamente, es absurdo.
  40.    system("clear") or system('cls')
  41.    puts('Procesando...')
  42.    sleep(3)
  43.    system("clear") or system('cls')
  44.  
  45.    puts("Fuerza     : #{str}\n"\
  46.         "Agilidad   : #{agi}\n"\
  47.         "Vitalidad  : #{vit}\n"\
  48.         "Energia    : #{ene}\n\n")
  49. end
  50.  
  51. system('(CHCP 1252)1>NUL')
  52. Main()
  53.  
  54. __END__

No siempre te lo van a dar todo hecho, aprende un lenguaje para lo que necesites, no cuesta nada aprender lo más básico de lo básico que en este caso sería aprender a imprimir texto, usar los operadores aritméticos, y quizás los tipos de búcles, fin.

Saludos!


Título: Re: [AYUDA] Porcentaje de un número en Batch
Publicado por: Geormarsch en 19 Octubre 2016, 06:31 am
Toda la razón, me iré por python y veré que sucede respecto al Script.

Gracias totales.