Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: snpss en 24 Septiembre 2019, 15:37 pm



Título: Suma de arrays en BATCH
Publicado por: snpss en 24 Septiembre 2019, 15:37 pm
hola estoy aprendiendo el lenguaje de programacion en BATCH y tengo un inconveniente con la suma de arrays bidimensionales. Como podria solucionarlos?. Este es mi codigo.

@echo off
setlocal enabledelayedexpansion
REM construyendo los arrays:
set /p filas=ingrese el numero de filas:
set /p columnas=ingrese el numero de columnas:

for /l %%i in (0,1,%filas%) do (
  for /l %%j in (0,1,%columnas%) do (
    set /a num1=!random! %%10
    set /a num2=!random! %%10
    set array[%%i,%%j]=!num1!
    set array2[%%i,%%j]=!num2!
  )
)
set array array2
pause


REM SUMA DE ARRAYS
for /l %%i in (0,1,%filas%) do (
  for /l %%j in (0,1,%columnas%) do (
   
    set /a suma=%array[%%i,%%j]%+%array2[%%i,%%j]%
    set sumarray[%%i,%%j]=%suma%
  )
)
set sumarray
pause

exit


Título: Re: Suma de arrays en BATCH
Publicado por: EdePC en 24 Septiembre 2019, 17:23 pm
Saludos,

- Lo estabas haciendo bien, SetLocal EnableDelayedExpansion permite actualizar variables dentro de bucles For, pero para que esto suceda tienes que usar !variable! en lugar de %variable%, en tu caso sigues utilizando %variable% en tus bucles de suma de variables.

- En Batch puro no hay Arrays, tu idea en realidad crea variables para cada valor de tu "Array" simulándolo.

- A mí me funciona lo siguiente, fíjate que he reemplazado % por ! siempre que voy a actualizar variables dentro del bucle:

Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM construyendo los arrays:
  4. set /p filas=ingrese el numero de filas:
  5. set /p columnas=ingrese el numero de columnas:
  6.  
  7. for /l %%i in (0,1,%filas%) do (
  8.  for /l %%j in (0,1,%columnas%) do (
  9.    set /a num1=!random! %% 10
  10.    set /a num2=!random! %% 10
  11.    set array[%%i,%%j]=!num1!
  12.    set array2[%%i,%%j]=!num2!
  13.  )
  14. )
  15. set array array2
  16. pause
  17.  
  18. REM SUMA DE ARRAYS
  19. for /l %%i in (0,1,%filas%) do (
  20.  for /l %%j in (0,1,%columnas%) do (
  21.    set /a suma=!array[%%i,%%j]!+!array2[%%i,%%j]!
  22.    set sumarray[%%i,%%j]=!suma!
  23.  )
  24. )
  25. set sumarray
  26. pause


Título: Re: Suma de arrays en BATCH
Publicado por: snpss en 24 Septiembre 2019, 18:39 pm
muchas gracias!