使用for循环在C ++中打印矩阵辅助对角线?

问题描述 投票:0回答:3

我有一个简单的程序,我想打印矩阵的二级对角线中的所有元素 - 这些是数字5,9,13,-21,12,但程序不能按预期工作。我究竟做错了什么?

#include <iostream>
#define SIZE 5
int a[SIZE][SIZE]={
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{100,-21,-70,345,77},
{12,17,765,98,55}
};

for(int i=0;i<5;i++)//The first index increases
for(int k=5;k>0;k--)//The second index decreases
cout<<a[i][k]<<endl;//Printing the element
c++ matrix diagonal
3个回答
2
投票

没有必要第二个for loop。你只能用一个来做:

for (int i = 0; i < SIZE; i++){
    std::cout << a[i][SIZE - i - 1] << ' ';
}

通过这种方式,您可以使用单个for循环使用两个索引。


1
投票

好吧,你做到了

for (k=5; k>0; k--)

但没有a[0][5]

第一行中的最后一个元素是a[0][4],所以你的数组应该从4开始并向下变为0

for (k=4; k>=0; k--)

顺便说一句,只需1个循环即可完成。

对于第二对角线的每个元素,索引的总和为4。

0+4=4
1+3=4
2+2=3
3+1=4
4+0=4

所以你可以把它写成a[i][4-i]

for(i=0; i<5; i++) 
cout<<a[i][4-i]<<endl;

0
投票

尝试这样做:

for(int i=0; i<5; i++) {
    cout << a[i][4-i] << endl;
}
© www.soinside.com 2019 - 2024. All rights reserved.