Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Проверить, является матрица симметрической

Автор: Barbudo 28.05.2007 15:05

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

как я понел нужно доказать чтоб в этой матрице первый и последний столбец были равны
второй с начала и второй с конца тоже равны, третий третиму с конца, четыёртый четвёртому с конца, всё относительно цента - тоесть 8 столбца.
хоть на рандоме получить такую матрицу нереально, но всёравно как это написать?(
ну или можно относительно других элементов это доказать.

Автор: klem4 28.05.2007 15:09

Цитата
хоть на рандоме получить такую матрицу нереально,


smile.gif Очень даже реально.

проверка, является ли матрица симметричной относительно средней строки:

Идешь по строкам от 1 до n div 2, и по столбцам от 1 до m и смотришь

если
X[i, j] <> X[n - i + 1, j]
то циклы прекращаются, матрица не симметрична.



Автор: Barbudo 28.05.2007 18:38

Цитата(klem4 @ 28.05.2007 12:09) *

smile.gif Очень даже реально.

проверка, является ли матрица симметричной относительно средней строки:

Идешь по строкам от 1 до n div 2, и по столбцам от 1 до m и смотришь

если
X[i, j] <> X[n - i + 1, j]
то циклы прекращаются, матрица не симметрична.

можно поподробнее give_rose.gif
код с циклами бы, а то я не представляю как это замутить
а то так мне не очень понятно nea.gif

Автор: мисс_граффити 28.05.2007 19:57

Относительно центра - это не по заданию?...
Тогда вот, например (относительно побочной диагонали): http://forum.pascal.net.ru/index.php?showtopic=8109&hl=%F1%E8%EC%EC%E5%F2%F0%E8%F7*++%EC%E0%F2%F0*

Автор: Barbudo 30.05.2007 17:12

Цитата(мисс_граффити @ 28.05.2007 16:57) *

Относительно центра - это не по заданию?...
Тогда вот, например (относительно побочной диагонали): http://forum.pascal.net.ru/index.php?showtopic=8109&hl=%F1%E8%EC%EC%E5%F2%F0%E8%F7*++%EC%E0%F2%F0*

ну можно сказать что по заданию нужно проверить, является ли матрица симметричной относительно среднего столбца give_rose.gif
ну вопрос открыт помогите это сделать give_rose.gif

Автор: Barbudo 30.05.2007 20:53

вот помогли с кодом

Код

Prigram matr;

CONST

  N=15;

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.


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

хелп в чом трабла? no1.gif

Автор: klem4 30.05.2007 21:46

const n = 5;
type
TMatrix = array [1..n, 1..n] of Integer;

var
x: TMatrix = (
(1, 2, 3, 4, 5),
(5, 6, 7, 8, 9),
(1, 1, 1, 1, 1),
(5, 6, 7, 8, 9),
(1, 2, 3, 4, 5)
);

i, j: Integer;
ok: Boolean;

begin
ok := true;
i := 1;
while (i <= n div 2) and ok do begin
j := 1;
while (j <= n) and ok do begin
ok := x[i, j] = x[n - i + 1, j];
inc(j);
end;
inc(i);
end;

if ok then writeln('ok') else writeln('bad');
end.