在pascal中添加两个多维数组

时间:2018-05-13 05:28:37

标签: multidimensional-array pascal

我试图添加两个不同大小的多维数组。

我希望你理解我的代码变量是葡萄牙语。

Program NOTA_ALUNO; 
Var   
  A,B,C: Array[1..100,1..100] Of Integer;
  contadorHorizontal,contadorVertical: Integer; 
  valoresVertical_A,valoresHorizontal_A,mm,nn: Integer; 
  valoresVertical_B,valoresHorizontal_B: Integer; 
Begin   
  Writeln('digite as dimensões das matrizes:'); 
  Readln(valoresHorizontal_A,valoresVertical_A);  
  Writeln('digite os elementos da matriz A:');   
  For contadorHorizontal := 1 To valoresHorizontal_A Do
  Begin
    For contadorVertical := 1 To valoresVertical_A Do
    Begin
      Read(A[contadorHorizontal,contadorVertical]);
    End;
    Readln;
  End;   
  Writeln('digite as dimensões das matrizes:'); 
  Readln(valoresHorizontal_B,valoresVertical_B);  
  Writeln('digite os elementos da matriz B:');   
  For contadorHorizontal := 1 To valoresHorizontal_B Do
  Begin
    For contadorVertical := 1 To valoresVertical_B Do
    Begin
      Read(B[contadorHorizontal,contadorVertical]);
    End;
    Readln;
  End;  

这就是我所做的。如果数组A的x轴的值是 大于数组B,我取数组B的数量并添加一个并用零填充缺失的空格。但这不起作用:

  If (valoresHorizontal_A > valoresHorizontal_B) Then
    nn := valoresHorizontal_B+1;   
  For contadorHorizontal := nn To valoresHorizontal_A Do
  Begin
    B[contadorHorizontal,contadorVertical] := 0;
  End;  

  {calcular a soma de A + B} 
  For contadorHorizontal := 1 To valoresHorizontal_A Do
  Begin
    For contadorVertical := 1 To valoresVertical_A Do
    Begin
      C[contadorHorizontal,contadorVertical] := 
        A[contadorHorizontal,contadorVertical] +
        B[contadorHorizontal,contadorVertical];
    End;
  End;  
  {imprimir o resultado}   
  Writeln('O resultado da soma de A+B:');   
  For contadorHorizontal := 1 To valoresHorizontal_A Do
  Begin
    For contadorVertical := 1 To valoresVertical_A Do
    Begin
      Write(C[contadorHorizontal,contadorVertical],'  '); 
      {deixar espaço entre números}
    End;
    Writeln; { quebra linha }
  End;   
  Readln; 
End.

1 个答案:

答案 0 :(得分:0)

在您输入值之前,可以解决您的问题的方法是在开始时使用零填充数组。像这样:

  For contadorHorizontal := 1 To 100 Do
  Begin
    For contadorVertical := 1 To 100 Do
    Begin
      A[contadorHorizontal,contadorVertical] := 0;
      B[contadorHorizontal,contadorVertical] := 0;
    End;
  End; 

删除此部分:

  If (valoresHorizontal_A > valoresHorizontal_B) Then
    nn := valoresHorizontal_B+1;   
  For contadorHorizontal := nn To valoresHorizontal_A Do
  Begin
    B[contadorHorizontal,contadorVertical] := 0;
  End;