Viết chương trình kiểm tra ma trận có phải là ma phương.khi ma trận được gọi là ma phương khi trong các hàng,cột,các đường chéo bằng nhau
Viết chương trình kiểm tra ma trận có phải là ma phương.khi ma trận được gọi là ma phương khi trong các hàng,cột,các đường chéo bằng nhau
#include<iostream>
using namespace std;
bool kt(int m) //kiểm tra ma phương
{
int mt[m][m],a=0,b=0;
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
cin>>mt[i][j]; //nhập ma trận
if(i==j) a+=mt[i][j];
}
}
for(int i=0;i<m;i++)
{
b=0;
for(int j=0;j<m;j++)
b+=mt[i][j];
if(b!=a) return false;
}
for(int i=0;i<m;i++)
{
b=0;
for(int j=0;j<m;j++)
b+=mt[j][i];
if(b!=a) return false;
}
b=0;
for(int i=0;i<m;i++)
{
int j=m-i-1;
b+=mt[i][j];
}
if(b!=a) return false;
return true;
}
int main()
{
int m;
cin>>m; //nhập cấp ma trận
if(kt(m)) cout<<“Ma tran vua nhap vao la ma phuong.”;
else cout<<“Ma tran vua nhap vao khong phai la ma phuong.”;
//samon247
}
uses crt;
var n,i,j,kt:longint; a:array[1..1000,1..1000]of longint;
b:array[1..10000000]of longint;
begin
clrscr;
write(‘n=’);readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write(‘a[‘,i,’,’,j,’]=’);readln(a[i,j]);
end;
for i:=1 to n do for j:=1 to n do inc(b[i],a[i,j]);
for i:=1 to n do for j:=1 to n do inc(b[n+i],a[j,i]);
for i:=1 to n do inc(b[n*2+1],a[i,i]);
for i:=1 to n do inc(b[n*2+2],a[i,n-i+1]);
for i:=2 to n*2+2 do if b[i]<>b[i-1] then kt:=1;
writeln(kt=0);
readln
end.