从批处理文件中列出矩阵

时间:2016-04-06 15:01:38

标签: batch-file matrix

我需要制作带有两个参数的批处理文件。

首先是包含矩阵A的txt文件,其中包含由','。

分隔的整数值

第二个参数也是txt文件。它包含由''。

分隔的整数数组B.

批处理文件应创建名为result.txt的文件,其中包含矩阵C,其中 C[i][j]=A[i][j]+k[i][j]其中k[i][j]是数组B中出现次数A[i][j]的数量。如果有人能帮助我,我将非常感激。我试图解决这个问题,但是dos中的命令正在杀死我......

例如:

matrix.txt

1,2,3
4,5,6

array.txt

1 3 2 5 1

results.txt

3 3 4

4 6 6

2 个答案:

答案 0 :(得分:2)

这个问题很有意思!这就是我要解决的问题:

split

编辑:正如用户aschipfl指出的那样,这个答案只是如何解决这个问题的伪代码,我作为一个提示发布给你(因为当OP没有显示时发布完整的解决方案他/她自己解决问题的努力在这里不是一个好习惯。)

然而,现在又发布了另一个工作解决方案,我将之前的伪代码完成了一个完整的工作程序:

rem Count the number of times each number appear in array B
for each line in %2 do (
   for each number %%n in line do (
      add 1 to times[%%n]
   )
)

rem Process the matrix A
for each line in %1 do (
   rem Initialize output line
   set "out="
   for each number %%n in line do (
      set termC = %%n + times[%%n]
      join termC to out
   )
   echo out
)

答案 1 :(得分:0)

@echo off
setlocal enabledelayedexpansion

for /f "usebackq delims=" %%a in ("path+array.txt") do (
  set "array_all=%%a"
)
set array_n=0
call :sub_2 %array_all%
set array_n_all=%array_n%

for /f "usebackq delims=" %%a in ("path+matrix.txt") do (
  set "current_line=%%a"
  set "current_line=!current_line:,= !"
  set "matrix_new="
  call :sub_1 !current_line!
  echo !matrix_new:~1!>>"path+results.txt"
)
exit /b

:sub_1
set "current_value=%1"
if not defined current_value exit /b
set "array_rest=!array_all:%current_value%=!"
set array_n=0
call :sub_2 %array_rest%
set /a current_value_new=%current_value%+%array_n_all%-%array_n%
set "matrix_new=%matrix_new% %current_value_new%"
shift
goto sub_1

:sub_2
set "array_tmp=%1"
if not defined array_tmp exit /b
set /a array_n+=1
shift
goto sub_2