Suma de arrays en BATCH

Iniciado por snpss, 24 Septiembre 2019, 15:37 PM

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

snpss

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

EdePC

#1
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

snpss