C 二维数组中对角线的和 for(行=0;行

C 二维数组中对角线的和 for(行=0;行,c,arrays,C,Arrays,对角线元素和主对角线仅为正方形矩阵定义 for (row=0; row<SIZE; row++) { for (col=0; col<SIZE; col++) { if (row == 0 && col == 0) { answer+=my_data[row][col]; } else if ((row)/(col) == 1

对角线元素和主对角线仅为正方形矩阵定义

for (row=0; row<SIZE; row++)
    {
        for (col=0; col<SIZE; col++)
        {
            if (row == 0 && col == 0) {
                answer+=my_data[row][col];
            }
            else if ((row)/(col) == 1) //1 is slope of array
            {
                answer+=my_data[row][col];
            }
        }
    }
    printf("The diagonal sum of the 8x8 array is: %i\n",answer);
对于非正方形矩阵,如果要在行数和列数相等的位置对元素求和,可以执行以下操作:

if rowcount == colcount
  sum = 0
  for i = 0 to rowcount
    sum += matrix[i][i]
  end-for
else
  print Diagonal sum not defined
end-if

这里主要关心的是,如果不是方阵,对角元素的定义是什么。如果是方阵,那么它应该是RowCount==ColCount。但是如果不是方阵呢???

codaddict是正确的;只有方阵才有对角元素。
我想你想在rownum==colnum?

的地方添加元素,如果它是非正方形的,我的猜测是忽略多余的行或列;这似乎是最合理的方法,尽管这只是一个猜测,因为非正方形矩阵的对角线没有定义,但我想,既然你是在询问2维数组而不是矩阵,那么问题的背景是编程作业,而不是线性代数

为此,可以获取行和列的最小长度,然后从0迭代到该最小长度:

sum = 0
for i = 0 to min(rowcount,colcount)
  sum += matrix[i][i]
end-for
print sum
diag\u len=min(行大小、列大小);

for(int i=0;i

(0,0);(1,0);(2,1);(3,1);(4,2);(5,2)将完全有效。

include int main(){

int a[10][10],i,j,和=0,m,n

printf(“\n输入矩阵的行和列:”); scanf(“%d%d”,&m,&n)


printf(“\n输入矩阵的元素:”);

所以单for循环是唯一的方法?如果你真的想要那个数据,你需要使用插值,甚至是过滤来实现它(基本思想是按比例步进到其他轴的长度)。如果它用于矩阵数据(即线性组合)你应该考虑从“2x3数组”中的答案,哪些元素属于对角线?我理解那部分,但是我想到数组的斜率。我可以取数组的斜率,只取与斜率相等的数字。“点”。数组中的斜率是我的对角线。如果它是一个2x3矩阵,我认为即使斜率是列表形式,也无法检索所有元素:-)例如:在2x3矩阵(0,0)和(1,2)中如果考虑斜率,则会考虑元素。哦,根据上下文的不同,你的斜率方法也不一定不好。例如,如果我们谈论的是一幅图像,它是一个NxM像素阵列,那么非正方形对角线就不那么模棱两可了——它只是两个角之间的一条线。这不是问题的答案问题:
diag_len = min (row_size, col_size);

for (int i = 0; i < /* or <= */ diag_len; i++) {
  answer += my_data[i][i];
}