Test Foro de elhacker.net SMF 2.1

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 (bash) [Seleccionar]
@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
Título: Re: Suma de arrays en BATCH
Publicado por: snpss en 24 Septiembre 2019, 18:39 PM
muchas gracias!