Пакетное добавление массивов - PullRequest
1 голос
/ 22 сентября 2019

Привет, я пытаюсь добавить массив, но мой код неверен.

@echo off
setlocal enabledelayedexpansion

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 array[%%i,%%j]=!random! 
    set array2[%%i,%%j]=!random!
  )
)

set array array2
pause

echo addition
for /l %%i in (0,1,%filas%) do (
  for /l %%j in (0,1,%columnas%) do (   
    set /a arreglo[%%i,%%j]= !array[%%i,%%j]!+!array2[%%i,%%j]!    
  )
)
set arrreglo
pause

exit

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Основываясь на моих комментариях, исправляя вашу опечатку, удаляя ненужные ! из ваших Set /A и добавляя некоторую проверку для ввода пользователя, вот пример:

@Echo Off
SetLocal EnableDelayedExpansion

:AskInput
Rem Ensure variable names are undefined.
For %%I In (filas testf columnas testc)Do Set "%%I="

Rem Ask for numeric input for filas and verify as valid.
Set /P "filas=ingrese el numero de filas: "
Set /A "testf=!filas!" 2>NUL||Set "testf="
If Not "!testf!"=="!filas!" GoTo AskInput

Rem Ask for numeric input for columnas and verify as valid.
Set /P "columnas=ingrese el numero de columnas: "
Set /A "testc=!columnas!" 2>NUL||Set "testc="
If Not "!testc!"=="!columnas!" GoTo AskInput

Rem Undefine superfluous variables.
For /F "Delims==" %%I In ('Set test 2^>NUL')Do Set "%%I="

Rem Define array/array2 variables.
For /F "Delims==" %%I In ('Set array 2^>NUL')Do Set "%%I="
For /L %%I In (0,1,%filas%)Do For /L %%J In (0,1,%columnas%
)Do Set /A array[%%I_%%J]=!RANDOM!,array2[%%I_%%J]=!RANDOM!

Rem Show array/array2 variables with their values.
Set array
Pause

Echo Addition
Rem Define arreglo variables.
For /F "Delims==" %%I In ('Set arreglo 2^>NUL')Do Set "%%I="
For /L %%I In (0,1,%filas%)Do For /l %%J In (0,1,%columnas%
)Do Set /A arreglo[%%I_%%J]=array[%%I_%%J]+array2[%%I_%%J]

Rem Show arreglo variables with their values.
Set arreglo
Pause
0 голосов
/ 23 сентября 2019

Первая проблема: замените каждый , в каждом var[%%i,%%j] символом без разделителя.Символы-разделители: Пробел , Tab ; и , .Я бы предложил _ в этом случае (как описано в Compo)

Вторая проблема: Ваше утверждение set arrreglo, которое показывает результаты сложения, содержит слишком много r s (опечатка)

Нет необходимости включать ! в оператор set /a ...+..., поскольку синтаксис set /a позволяет использовать имена переменных без надписей.Тот факт, что значение (например) array[...] не изменяется в цикле, должно указывать на то, что ! вряд ли потребуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...