Транспонировать матрицу |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Транспонировать матрицу |
lacomca |
28.03.2006 10:24
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
Транспонировать матрицу A=(d(ij))^m*m, где m<=10. Проверить является ли она симметричной, если да, то переменной Q присвоить 1, в противном случае - 0.
||0,5 1 2|| A= ||1 3,2 1|| ||2 1 0,5|| Квадратная матрица называется симметричной матрицей, если ее элементы, симметричные относительно главной диагонали, равны между собой, т.е. aij = aji для всех i, j. Матрица является симметричной, если она совпадает со своей транспонированной матрицей (т.е. A = A'). Другими словами, нижний треугольник квадратной матрицы является "зеркальным отражением" верхнего треугольника. |
Ozzя |
28.03.2006 10:41
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
http://forum.pascalnet.ru/index.php?s=&sh...indpost&p=28387
Цитата Function matrixTranspose(a: TMatrix): PTMatrix; Функция возвращает указатель на созданную в динамической памяти матрицу, являющуюся транспонированной матрицей A, т.е. строки исходной матрицы становятся столбцами и наоборот (или nil при невозможности выделения памяти) Цитата Матрица является симметричной, если она совпадает со своей транспонированной матрицей (т.е. A = A'). Цитата Квадратная матрица называется симметричной матрицей, если ее элементы, симметричные относительно главной диагонали, равны между собой, т.е. aij = aji для всех i, j. Function IsMatrixSimmetric (A : TMatrix) : boolean; |
lacomca |
28.03.2006 10:43
Сообщение
#3
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
Спасибо за изящное решение.
Но я только на первом курсе и это решение выше уровня моих знаний. Будьте добры, если у вас есть возможность, написать мне более упрощенный вариант (с переменной строк и столбцов матрицы). |
Ozzя |
28.03.2006 10:50
Сообщение
#4
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
Спасибо за изящное решение. Но я только на первом курсе и это решение выше уровня моих знаний. Будьте добры, если у вас есть возможность, написать мне более упрощенный вариант (с переменной строк и столбцов матрицы). Procedure matrixTranspose(var a: TMatrix); Тип Сообщение отредактировано: volvo - 2.11.2006 18:57 |
мисс_граффити |
28.03.2006 16:31
Сообщение
#5
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Зачем нам целая вспомогательная матрица?
procedure transp(var A2:TMatrix); -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
lacomca |
1.04.2006 16:14
Сообщение
#6
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
составить програму под эту задачу через процедуры. Транспонировать три матрицы матрицу A=(a(ij))^m1*m1, B=(b(ij))^m2*m2,C=(c(ij))^m3*m3,где m<=10. Проверить является ли она симметричной, если да, то переменной Q присвоить 1, в противном случае - 0.
начитая с процедуры trans у меня ничего не получаеться: program pr1; |
volvo |
1.04.2006 16:26
Сообщение
#7
|
Гость |
Цитата начитая с процедуры trans у меня ничего не получаеться: Просто у тебя изменения в матрицах НЕ передаются в вызывающую программу. Чтобы это происходило, надо описать Trans вот так:procedure trans (VAR z, y: matr; m: integer); И vvod не забудь поменять тоже: procedure vvod (var m:integer; VAR z:matr); Кстати, simmetria лучше бы определить как функцию, тут функция по смыслу больше подходит... |
lacomca |
1.04.2006 16:28
Сообщение
#8
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
если я опишу simmetria через функцию там надо будет много чего менять????
|
volvo |
1.04.2006 16:36
Сообщение
#9
|
Гость |
Вместо
simmetria(a,at,m1,q);будешь делать: pechat(at,m1,simmetria(a,at,m1)); По-моему, так удобнее... |
lacomca |
1.04.2006 16:39
Сообщение
#10
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
спасибо большое. я просто еще ни разу не записывала через функцию, мы это только прошли. а что надо поменять в самом описании(там где про симметрию)?
|
volvo |
1.04.2006 16:41
Сообщение
#11
|
Гость |
function simmetria (z,y:matr; m:integer): integer; |
lacomca |
1.04.2006 16:48
Сообщение
#12
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
с функцией все получилось, спасибо. но, видимо, сам алгоритм не верен, так как все матрицы, которые я задаю, при транспонировании получаются нулевыми.
|
volvo |
1.04.2006 16:55
Сообщение
#13
|
Гость |
Ты сделала то, что я сказал в посте №7 с процедурами Trans и Vvod ? У меня все нормально отрабатывает...
|
lacomca |
1.04.2006 17:00
Сообщение
#14
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
спасибо большое все заработало.не увидела про ввод.
|
Текстовая версия | 26.04.2024 13:05 |