Помощь - Поиск - Пользователи - Календарь
Полная версия: Проверить, является матрица симметрической
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Barbudo
Задание:
матрица D(15,15). Проверить, является ли она симметрической. Вывести на экран соответствующее сообщение.

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


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

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

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

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


Barbudo
Цитата(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
мисс_граффити
Относительно центра - это не по заданию?...
Тогда вот, например (относительно побочной диагонали): проверка матрицы на симметричность
Barbudo
Цитата(мисс_граффити @ 28.05.2007 16:57) *

Относительно центра - это не по заданию?...
Тогда вот, например (относительно побочной диагонали): проверка матрицы на симметричность

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

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
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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.