Chương trình Ma trận

Hãy viết chương trình nhập giá trị cho ma trận vuông cấp n.
a. Tính tổng các phần tử nằm trên đường chéo chính
b. Tính tổng bình phương các số nằm trên hàng chẵn.
c. Tính tổng căn bậc hai các số không âm trên cột lẻ.
d. Đếm số phần tử có giá trị trong khoảng [1..5].

Program Ma_Tran;
Uses Crt;
Type MT = array[1..20,1..20] of integer;
Var a:MT;
n:integer;
Procedure Input(Var a:MT; n:integer); Var i, j:integer;
Begin
For i:=1 to n do
For j:=1 to n do
Begin
Write(‘a’,i,j,’=’);
Readln(a[i,j]);
End;
End;
Procedure Output(a:MT;n:integer); Var i,j:integer;
Begin
For i:=1 to n do
Begin
For j:=1 to n do
Write (a[i,j]:3);
Writeln;
End;
End;
{Tong cac phan tu tren duong cheo chinh}
Function Sum1(a:MT;n:integer):integer;
Var i,kq:integer;
Begin

kq:=0;
For i:=1 to n do kq:=kq + a[i,i];
sum1:=kq;
End;
{Tong binh phuong cac so tren hang chan} Function Sum2(a:MT;n:integer):integer;
Var i,j,kq:integer;
Begin
kq:=0;
For i:=1 to n do
For j:=1 to n do
If(i mod 2 =0) then kq:=kq+SQR(a[i,j]);
Sum2:=kq;
End;
{Tong can bac hai cac so tren cot le} Function Sum3(a:MT;n:integer):real;
Var i,j:integer;
kq:real;

Begin
kq:=0;
For i:=1 to n do
For j:=1 to n do
If (j mod 2 =1) and (a[i,j]>=0)then kq:=kq + SQRT(a[i,j]);

Sum3:=kq;
End;
{So phan tu cua ma tran co gia tri nam trong [1..5]} Function Count(a:MT;n:integer):integer;
Var i,j,kq:integer; Begin
kq:=0;
For i:=1 to n do
For j:=1 to n do
If (a[i,j]>=1) and(a[i,j]<=5) then kq:=kq+1;

Count:=kq;
End;

Begin
Clrscr;
Writeln('CHUONG TRINH TINH TONG CAC PHAN TU CUA MA TRAN');
Write('Nhap cap cua ma tran n = ');readln(n); Input(a,n);
Output(a,n);
Writeln('Tong cac phan tu tren duong cheo chinh la = ',sum1(a,n));
Writeln('Tong binh phuong cac phan tu tren hang chan la = ',sum2(a,n));
Writeln('Tong can bac hai cac so khong am tren cot le = ',sum3(a,n):6:2);
Writeln('So phan tu trong khoang[1..5] = ', count(a,n));

Readln;

End.