我需要制作带有两个参数的批处理文件。
首先是包含矩阵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
答案 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