Форум «Всё о Паскале» _ Задачи _ Проверить, является матрица симметрической
Автор: Barbudo 28.05.2007 15:05
Задание: матрица D(15,15). Проверить, является ли она симметрической. Вывести на экран соответствующее сообщение.
как я понел нужно доказать чтоб в этой матрице первый и последний столбец были равны второй с начала и второй с конца тоже равны, третий третиму с конца, четыёртый четвёртому с конца, всё относительно цента - тоесть 8 столбца. хоть на рандоме получить такую матрицу нереально, но всёравно как это написать?( ну или можно относительно других элементов это доказать.
Автор: klem4 28.05.2007 15:09
Цитата
хоть на рандоме получить такую матрицу нереально,
Очень даже реально.
проверка, является ли матрица симметричной относительно средней строки:
Идешь по строкам от 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)
Очень даже реально.
проверка, является ли матрица симметричной относительно средней строки:
Идешь по строкам от 1 до n div 2, и по столбцам от 1 до m и смотришь
если
X[i, j] <> X[n - i + 1, j]
то циклы прекращаются, матрица не симметрична.
можно поподробнее код с циклами бы, а то я не представляю как это замутить а то так мне не очень понятно
Автор: мисс_граффити 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*
ну можно сказать что по заданию нужно проверить, является ли матрица симметричной относительно среднего столбца ну вопрос открыт помогите это сделать
Автор: 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]);
хелп в чом трабла?
Автор: klem4 30.05.2007 21:46
const n = 5; type TMatrix = array [1..n, 1..n] of Integer;
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.