判断二维数组的每行的和,每列的和,正对角线的和,副对角线的和是否相等

mac2026-04-19  8

#include<iostream> #include<set> using namespace std; /**二维数组(方阵)判断是否有重复元素,set*/ int main(int argc,char *argv[]){ int a[100][100];//创建一个大一点的数组,但输入的数据可以通过规定 阵列的行和列来输入 int i,j; int row,clumn;//注意行列值,要小于数组的行列值100 int line[100];//每行元素的和 int col[100];//每列元素的值 int x,y;//正对角线,副对角线的值 int max=0; set<int> s;//用来判断是不是相等 /* 5 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 */ while(cin>>row>>clumn){ for(i=0;i<row;i++){//给二维数组赋值 for(j=0;j<clumn;j++){ cin>>a[i][j]; } } //计算每行,列,对角线的值 //--初始化 x=0; y=0; for(i=0;i<row;i++){ line[i]=0; } for(j=0;j<clumn;j++){ col[i]=0; } max=row>clumn?row:clumn;//这个主要是对方阵,如果不是方阵,那就会默认填充成方阵,数组外的其它地方没有赋值 /* 1 2 3 2 4 6 1 2 3//把上面的行列式变成这样 2 4 6 0 0 0 */ //--计算 for(i=0;i<row;i++){ for(j=0;j<clumn;j++){ line[i]+=a[i][j]; col[j]+=a[i][j]; if(i==j) x=x+a[i][j]; if(i+j == max-1) y=y+a[i][j]; } } for(i=0;i<row;i++){ cout<<" "<<line[i]; } cout<<endl; for(j=0;j<clumn;j++){ cout<<" "<<col[j]; } cout<<endl; cout<<"x: "<<x<<endl; cout<<"y: "<<y<<endl; //判断是否相等 s.clear(); s.insert(x); s.insert(y); for(i=0;i<row;i++){ s.insert(line[i]); } for(j=0;j<clumn;j++){ s.insert(col[i]); } /* 4 4 16 9 6 3 5 4 15 10 11 14 1 8 2 7 12 13 */ if(s.size()!=1) cout<<"该二维数组的每行的和,每列的和,正对角线的和,副对角线的和相等"<<endl; else cout<<"该二维数组的每行的和,每列的和,正对角线的和,副对角线的和不相等"<<endl; }//while return 0; }
最新回复(0)