Транспонировать матрицу |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Транспонировать матрицу |
lacomca |
Сообщение
#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я |
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
http://forum.pascal.net.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 |
Сообщение
#3
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
Спасибо за изящное решение.
Но я только на первом курсе и это решение выше уровня моих знаний. Будьте добры, если у вас есть возможность, написать мне более упрощенный вариант (с переменной строк и столбцов матрицы). |
Ozzя |
Сообщение
#4
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
Спасибо за изящное решение. Но я только на первом курсе и это решение выше уровня моих знаний. Будьте добры, если у вас есть возможность, написать мне более упрощенный вариант (с переменной строк и столбцов матрицы). Procedure matrixTranspose(var a: TMatrix); Тип Сообщение отредактировано: volvo - |
мисс_граффити |
Сообщение
#5
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Зачем нам целая вспомогательная матрица?
procedure transp(var A2:TMatrix); -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
lacomca |
Сообщение
#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 |
Сообщение
#7
|
Гость |
Цитата начитая с процедуры trans у меня ничего не получаеться: Просто у тебя изменения в матрицах НЕ передаются в вызывающую программу. Чтобы это происходило, надо описать Trans вот так:procedure trans (VAR z, y: matr; m: integer); И vvod не забудь поменять тоже: procedure vvod (var m:integer; VAR z:matr); Кстати, simmetria лучше бы определить как функцию, тут функция по смыслу больше подходит... |
lacomca |
Сообщение
#8
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
если я опишу simmetria через функцию там надо будет много чего менять????
|
volvo |
Сообщение
#9
|
Гость |
Вместо
simmetria(a,at,m1,q);будешь делать: pechat(at,m1,simmetria(a,at,m1)); По-моему, так удобнее... |
lacomca |
Сообщение
#10
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
спасибо большое. я просто еще ни разу не записывала через функцию, мы это только прошли. а что надо поменять в самом описании(там где про симметрию)?
|
volvo |
Сообщение
#11
|
Гость |
function simmetria (z,y:matr; m:integer): integer; |
lacomca |
Сообщение
#12
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
с функцией все получилось, спасибо. но, видимо, сам алгоритм не верен, так как все матрицы, которые я задаю, при транспонировании получаются нулевыми.
|
volvo |
Сообщение
#13
|
Гость |
Ты сделала то, что я сказал в посте №7 с процедурами Trans и Vvod ? У меня все нормально отрабатывает...
|
lacomca |
Сообщение
#14
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Ольга Репутация: 0 |
спасибо большое все заработало.не увидела про ввод.
|
Текстовая версия | 10.10.2024 8:00 |