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];
}