Turbo Pascal- матрица

Ответить
Аватара пользователя
Barbudo
Сообщения: 4
Зарегистрирован: 29 май 2007, 18:20

Задание:
Задана матрица D(15,15). Проверить, является ли она симметрической. Вывести на экран соответствующее сообщение.
________________________________________________________________________


Не ясно одно относительн очего она симметрическая, допустим относительно 8 столбца :)
пожалуйста помогите :o
Ramzey
Сообщения: 52
Зарегистрирован: 12 дек 2006, 12:56

Симметричная она должна быть относительно главной диагонали, например:
1 2 3 4 5
2 1 3 4 5
3 3 1 4 5
4 4 4 1 5
5 5 5 5 1

Код: Выделить всё

CONST
  N=4;
var
  i,j  : byte;
  Matr : array [1..N,1..N] of integer;
BEGIN
  for i:=1 to N do
    for j:=1 to N do readln(Matr[i,j]);
  for i:=1 to N do
    begin
      for j:=i to N do
        if Matr[i][j]<>Matr[j][i] then
          begin
            writeln('ne simetrichnaj');
            halt(0)
          end;
    end;
  writeln('simetrichnaj');
END.
вроде так
Аватара пользователя
Barbudo
Сообщения: 4
Зарегистрирован: 29 май 2007, 18:20

Ramzey писал(а):Симметричная она должна быть относительно главной диагонали, например:
1 2 3 4 5
2 1 3 4 5
3 3 1 4 5
4 4 4 1 5
5 5 5 5 1
вроде так
спасиба, но может какнить можно переделать в проверку, является ли матрица симметричной относительно среднего столбца
(ну или средней строки): :rolleyes:
прошу помогите ;)
Ramzey
Сообщения: 52
Зарегистрирован: 12 дек 2006, 12:56

Ну это еще проще с точки зрения понимания (или нет?):

Код: Выделить всё

CONST

  N=4;

var

  i,j  : byte;

  Matr : array [1..N,1..N] of integer;

BEGIN

  for i:=1 to N do

    for j:=1 to N do readln(Matr[i,j]);

  for i:=1 to N do

    begin

      for j:=i to (N  div 2) do

        if Matr[i][j]<>Matr[i][N-j+1] then

          begin

            writeln('ne simetrichnaj');

            halt(0)

          end;

    end;

  writeln('simetrichnaj');

END.
Ramzey
Сообщения: 52
Зарегистрирован: 12 дек 2006, 12:56

да, у тебя N=15 будет - по заданию.
Аватара пользователя
Barbudo
Сообщения: 4
Зарегистрирован: 29 май 2007, 18:20

чото тут не так выдаёт ошибку - "invalid numeric format" напротив строчки
for j:=1 to 15 do readln(Matr[i,j]); :(

хелп ;)
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

&quot писал(а):чото тут не так выдаёт ошибку - "invalid numeric format" напротив строчки
Нужно вводить целые числа в интервале от -32768 до 32767 по-одному
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Barbudo
Сообщения: 4
Зарегистрирован: 29 май 2007, 18:20

всем огромное спасибо за помощь, очень помогли!
Ответить