#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;
}
判断二维数组的每行的和,每列的和,正对角线的和,副对角线的和是否相等
猜你喜欢
转载自blog.csdn.net/qq_43625764/article/details/102869408
今日推荐
周排行