gpt4 book ai didi

arrays - 算术平均的二维数组算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:33:42 26 4
gpt4 key购买 nike

帮我写程序

我必须找到矩阵 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.

请帮帮我!

最佳答案

正值是 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;

关于arrays - 算术平均的二维数组算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com