Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal] Матрицы


Автор: maloiplan 24.12.2006, 19:59
Помогите пожалуйста !!!!

2.Программа.Определить является ли заданная целая квадратная матрица 9-го порядка магическим квадратом т.е. такой в которой суммы во всех строках и столбцах одинаковы.

Автор: Rodman 24.12.2006, 20:12
Код

Program MagicSquare; 
Uses Crt; 
Var A : Array [1..20, 1..20] of Integer; 
    i, j, N : Integer; 
    Standard, S : Integer; {Standard - сумма-эталон, S - текущая сумма} 
    Flag : Boolean; 
{-------------------------------------} 
Procedure InputOutput; {описание процедуры ввода-вывода матрицы} 
Begin 
  ClrScr; 
  Write('Количество строк и столбцов - '); 
  ReadLn(N); 
  For i := 1 to N do 
    For j := 1 to N do 
      begin Write('A[' , i , ', ' , j , '] = '); 
            ReadLn(A[i, j]) 
      end;

  ClrScr; 
  WriteLn('Исходная матрица :'); WriteLn; 
  For i := 1 to N do 
    begin 
      For j := 1 to N do Write(A[i, j] : 5); 
      WriteLn 
    end; WriteLn 
End; { of InputOutput } 
{-------------------------------------------} 
Procedure MagicOrNot(Var Flag : Boolean);          {описание процедуры, }
                 {в которой выясняется, является ли квадрат "магическим"} 
 Begin   {вычисление суммы элементов главной диагонали} 
         {в качестве эталонной суммы} 
  Standard:=0; 
  For i := 1 to N do Standard := Standard + A[i,i];

  Flag:=TRUE; i:=1; 
  While (i<=N) and Flag do {вычисление сумм элементов строк} 
    begin 
      S:=0; 
      For j := 1 to N do S := S+A[i, j]; 
      If S<>Standard then Flag := FALSE else i:=i+1 
    end;

  j:=1; 
  While (j<=N) and Flag do {вычисление сумм элементов столбцов} 
    begin 
      S:=0; 
      For i := 1 to N do S:=S+A[i, j]; 
      If S<>Standard then Flag := FALSE else j := j+1 
    end;

  If Flag then 
    begin 
      S:=0; {вычисление суммы элементов побочной диагонали} 
      For i := 1 to N do S := S+A[i, N+1-i]; 
      If S<>Standard then Flag := FALSE; 
    end; 
End; 
{--------------------------------------------------------} 
BEGIN 
  InputOutput; {Вызов процедуры ввода-вывода } 
  MagicOrNot(Flag); {Вызов процедуры решения задачи } 
  If Flag then WriteLn('Это магический квадрат.') 
          else WriteLn('Это не магический квадрат.'); 
  ReadLn 
END.

Цитата(maloiplan @  24.12.2006,  18:59 Найти цитируемый пост)
такой в которой суммы во всех строках и столбцах одинаковы

по моемутам еще и диагонали должны быть

Автор: Alexeis 24.12.2006, 20:14

M
alexeis1
Модератор: Язык указывается в квадратных скобках. 

И старайтесь придумывать более содержательные заголовки. Ведь скажем название "[Pascal] Является ли матрица магическим квадратом" дает куда больше информации.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)