дана целая квадратная матрица n-порядка. Определить, является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы — Pascal(Паскаль)

const
  MAX=5;
 var a:array[1..MAX,1..MAX] of integer;
     n:integer;
     ok:boolean;
     i,j:integer;
     sum:integer;
     temp:integer;
 begin
  Write('Введите рамер матрицы (3..4)');
  Readln(n);
  Writeln('Введите строки матрицы!');
  Writeln('После ввода ',n,' целых чисел нажимайте Enter!');
   for i:=1 to n do
    begin
     Write('->');
      for j:=1 to n-1 do
       read(a[i,j]);
       readln(a[i,n]);
      end;
 
    Ok:=True;
    sum:=0;
     for i:=1 to n do
      sum:=sum+a[i,i];
    {Вычисляем сумму по строкам}
   i:=1;
    repeat
     temp:=0;
      for j:=1 to n do
       temp:=temp+a[i,j];
      i:=i+1;
       if temp <> sum then
        ok:=False;
    until (not ok) or (i>n);
 
   if ok then
    begin
     j:=1;
      repeat
       temp:=0;
       for i:=1 to n do
        temp:=temp+a[i,j];
        j:=j+1;
         if temp <> sum then
          ok:=False;
      until (not ok) or (j>n);
     if ok then
      begin
       temp:=0;
       j:=n;
        for i:=1 to n do
         begin
          temp:=temp+a[i,j];
          j:=j-1;
          end;
         if temp<> sum then
          ok:=False;
         end;
        end;
       Write('Введенная матрица');
        if not ok then
         write('не');
        Writeln('является магическим квадратом!');
       readln;
      end.

Leave a Comment

37 + = 39