Pascal 帕斯卡的小问题,你能帮忙吗?

Pascal 帕斯卡的小问题,你能帮忙吗?,pascal,Pascal,我用pascal编写这个程序 它要求用户输入两个数组和常量值,即K 该程序使用数组对K进行muli。 然后将答案保存在新数组中 并在新数组中执行一些操作 加法首先,使用与同名函数参数冲突的全局单字母变量是疯狂的 为什么multK将全局变量B修改为副作用? 为什么减号会将全局变量C修改为副作用? 为什么索引变量使用全局整数? 而且mult更糟糕:它不仅作为副作用修改了C,而且还假设C事先包含有意义的值。我认为它需要事先将C初始化为全零 我猜你的一些副作用会以奇怪的方式干扰。但我不想仔细考虑。首先重

我用pascal编写这个程序 它要求用户输入两个数组和常量值,即K 该程序使用数组对K进行muli。 然后将答案保存在新数组中 并在新数组中执行一些操作
加法首先,使用与同名函数参数冲突的全局单字母变量是疯狂的

为什么
multK
将全局变量
B
修改为副作用?
为什么
减号
会将全局变量
C
修改为副作用?
为什么索引变量使用全局整数?
而且
mult
更糟糕:它不仅作为副作用修改了
C
,而且还假设C事先包含有意义的值。我认为它需要事先将
C
初始化为全零


我猜你的一些副作用会以奇怪的方式干扰。但我不想仔细考虑。首先重构代码。特别是学习如何以及何时使用局部变量。

首先,您的问题是什么?把它说清楚。这是一个编译错误,还是某种运行时错误,在这两种情况下具体是什么?第二,你能不能把它缩短一些,但仍然以同样的方式失败?这不仅使任何试图帮助你的人都更容易,而且可能会帮助你发现问题。muli op中的问题。如果你能帮助我,我正在等待你。你至少应该描述观察到的行为和预期行为之间的差异。但你真正的问题不是bug,而是你写的代码不可读。你可以运行这个程序。看看吧,我知道问题不大。所以我请求帮助。在多重运算中只是一个部分而不是整个程序。我想让程序用数组b多重数组a并将结果保存在c中,同时也希望这些运算被重复。如果你有任何其他建议或帮助,我现在需要它,问题是如何使用pascal对两个矩阵进行乘法?@user570285:如何使用pascal对矩阵进行乘法的问题太广泛了,不是一个好问题。如果您要按照此答案的建议重写代码,请重试,并告诉我们具体出了什么问题,我们可能会更有用。当用户选择*时,他必须输入新矩阵。我希望程序将旧矩阵A和B合并?
program BST6;

const maxN=100;maxM=100;
type mat=array[1..maxN,1..maxM]of integer;
var A,B,c:mat;
    n,m,l,s,i,j,k:integer;
    ch : char;

procedure readMat(var A:mat;var m,n:integer);
begin
for i:=1 to m do
    for j:=1 to n do
        begin
        write('mat[',i,',',j,']=');
        readln(A[i,j]);
        end;
end;

procedure writeMat(A:mat;m,n:integer);
begin
for i:=1 to m do
    begin
    for j:=1 to n do
        write(a[i,j]:4);
    writeln;
    end;
end;

function multK(A:mat;k:integer):mat;
begin
for i:=1 to n do
    for j:=1 to m do
        begin
        B[i,j]:= K*A[i,j];
        end;
multK:=B;
end;

function minus(A,B:mat):mat;
begin
for i:=1 to m do
    for j:=1 to n do
        C[i,j]:=A[i,j]-B[i,j];
minus:=C;
end;

function plus(A,B:mat):mat;
begin
for i:=1 to m do
    for j:=1 to n do
        C[i,j]:=A[i,j]+B[i,j];
plus:=C;
end;

function mult(A,B:mat;m,l,n:integer):mat;
begin
for i:=1 to m do
    for j:=1 to n do
        for k:=1 to l do
            c[i,j]:=c[i,j]+A[i,k]*B[k,j];
mult:=C;
end;

begin
write('input m<=',maxM,'.. m=' );readln(m);
write('input n<=',maxN,'.. n=');readln(n);
readMat(A,m,n);
writeln('input the const K');readln(k);
B:=multK(A,K);
writeln('The matrix A : ');
writeMat(A,m,n);
writeln('The matrix B=K*A : ');
writeMat(B,m,n);
writeln('choose the operation + , - or * ');
readln(ch);


case ch of
'+' : c:=plus(A,B);
'-' : c:=minus(A,B);
'*' : begin
      writeln('input m<=',maxM,'input l<=',maxN);readln(m,l);readMat(A,m,l);
      writeln('input l<=',maxN);readln(n);readMat(B,l,n);
      c:=mult(A,B,m,l,n);
      end;

end;
writeMat(c,m,n);
readln;
end.