Показать сообщение отдельно
  #3  
Старый 27.01.2013, 22:11
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Цитата:
Сообщение от ART
1000 рублей
Ну зачем же так?
Я вот например решил человеку помочь..
Вот решение задачи №8
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const matr_max    = 50;
var matrica       : array[1..matr_max, 1..matr_max] of integer;
    matrica_count : integer;
    q, r, c, t    : integer;
    bMagicSquare  : Boolean;
 
begin

  Write('Razmer matrix (N<=', matr_max,'): '); ReadLn(matrica_count);
  if matrica_count > matr_max then matrica_count := matr_max;

{ забиваем матрицу значениями}
  WriteLn('Matrix');
  for r := 1 to matrica_count do
  begin
    for c := 1 to matrica_count do
    begin
      Read(matrica[r, c]);

      //Write(matrica[r, c]:3, '  ');
    end;
    WriteLn;
  end;
 
  bMagicSquare := True;
 
{ считаем сумму элементов первой строки }
  t := 0;
  for c := 1 to matrica_count do
    t := t + matrica[1, c];

  { работаем по строкам }
  for r := 2 to matrica_count do
  begin
    q := 0;
 
    for c := 1 to matrica_count do
      q := q + matrica[r, c];

    if q<>t then
    begin
      bMagicSquare := False;
      break;
    end;
  end;
 

  if bMagicSquare then
  begin
   { работаем по столбцам }
    for r := 1 to matrica_count do
    begin
      q := 0;
 
      for c := 1 to matrica_count do
        q := q + matrica[c, r];
 
      if q<>t then
      begin
        bMagicSquare := False;
        break;
      end;
    end;
 
    if bMagicSquare then
    begin
      {проверяем диагонали}
 
      {главная диагональ}
      q := 0;
      for c := 1 to matrica_count do
        q := q + matrica[c, r];
 
      if q=t then
      begin
        {вторая диагональ}
        r:=1;
        c:=matrica_count;
        q:=0;
        while r<=matrica_count do
        begin
          q:=q+matrica[r,c];
          Inc(r);
          Dec(c);
        end;
 
        if q<>t then
          bMagicSquare := False;
      end;
    end;
  end;
 
 
  { выводим результаты }
  if bMagicSquare then
    WriteLn('Matrix - Magic Square')
  else
    WriteLn('Matrix - is not Magic Square');

  ReadLn;
  ReadLn;
end.
Ответить с цитированием