【问题标题】:Two-dimensional array algorithm with arithmetic mean算术平均的二维数组算法
【发布时间】:2014-03-15 17:57:34
【问题描述】:

帮我编程

我必须找到矩阵 A [5, 4] 每一列的正元素的算术平均值 前提是每一列至少有一个正元素

我已经尝试过,但我无法理解错误

program double_array;
var
  A : array [1..5, 1..4] of integer;
  B : array [1..5] of real;
  i, j, k : integer;
  s : real;
begin
  writeln('Enter your array');
  for i := 1 to 5 do
    begin 
      writeln(' ');
      for j := 1 to 4 do
        readln( A[i, j] );
    end;

  for i := 1 to 5 do
    begin
      s := 0;  k := 0;
      for j := 1 to 4 do
        if A[i, j] > 1 then
         begin
          s := s + A[i,j];
          k := k + 1;
         end;
      B[i] := s / k;
    end;

  writeln('Result B');
    for i := 1 to 5 do
    write ( B[i]:7:3 );
    writeln;
end.

请帮帮我!

【问题讨论】:

  • 你不应该告诉我们错误是什么吗?
  • 别担心,SO(来自任何国家)人民支持 SO(来自任何国家)人民 :)
  • @Olivier Jacot-Descombes 我认为它显示了每一行的算术平均值。但不是列

标签: arrays algorithm matrix pascal turbo-pascal


【解决方案1】:

正值是A[i, j] > 0,而不是A[i, j] > 1


如果要计算列而不是行的均值,请反转索引:

for j := 1 to 4 do begin
    s := 0;  k := 0;
    for i := 1 to 5 do
        if A[i, j] > 0 then begin
            s := s + A[i,j];
            k := k + 1;
        end;
    B[j] := s / k;
end;

您有四列[1 .. 4]。因此外循环的范围必须从14。然后内部循环必须遍历从15 的行,以便每列添加五个数字。


我还建议您使用常量和变量名称,这有助于理解代码的作用并避免错误。

const
    NumRows = 5;
    NumColumns = 4;

var
    matrix : array [1..NumRows, 1..NumColumns] of integer;
    arithmeticMean : array [1..NumColumns] of real;
    row, column : integer; { Loop variables }
    numPositive : integer;
    sum : real;

for column := 1 to NumColumns do begin
    sum := 0;   numPositive := 0;
    for row := 1 to NumRows do begin
        if matrix[row, column] > 0 then begin
            sum := sum + matrix[row, column];
            numPositive = numPositive + 1
        end
    end;
    if numPositive > 0 then begin
        arithmeticMean[column] := sum / numPositive
    end else begin
        arithmeticMean[column] := 0;
    end;
end;

【讨论】:

  • 哈哈同意变量名部分 :D OP 似乎想模仿旅游者,这是竞争性编程社区中著名的编码员。他曾经写过code like this
  • 是的,理解游客的密码是值得诺贝尔奖的。
猜你喜欢
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
相关资源
最近更新 更多