![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
Доброго времени суток!
Есть функция(подключаю из модуля) по работе с матрицами(например транспонирование)
и stringgrid1.Cells[i,j] где задается матрица с которой будем делать разные операции вопрос возможно очень дуратский.... как обработать грид с помощью этой функции(т.е. передать данные из таблицы в функцию) и вывести результат например в другой stringgrid... --------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 7 Всего: 89 |
А в чем, собственно вопрос - как "подкрутить" функцию под работу с гридом или как в переменную матрицы забить значения грида? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
Помоему будет проще просто перекидывать данные из stringgrid в функцию(т.е. создавать матрицу и запихивать в нее данные из грида) далее расчитываем получаем уже транспонированную матрицу, проблема в том что не пойму как перенести содержимое гирда в функцию для расчета...
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 7 Всего: 89 |
Digo, недоконца ты привел исходны код.
Вот тебе пример:
Поможет? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
а что такое a[i,j]? этот массив тоже ж надо объявить?
и
Это сообщение отредактировал(а) VICTAR - 7.1.2007, 13:53 |
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
Собственно модуль довольно извесный весь его код тут(я привел только 1 функцию чтобы не загромождать все
То что вы описали это понятно - перевод в масив из гирда... мне интересно как это все запихать в функцию вызываемую из того модуля что я привел, ну например matirx.TransponeMatrix(????); нужно соответствие типов, там вообще все через record сделано... --------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 7 Всего: 89 |
Ну тогда записывай и грида в рекорд. В чем проблеммы? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
проблема как раз в том что плохо себе представляю как это сделать
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Это сообщение отредактировал(а) VICTAR - 7.1.2007, 16:33 |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 6 Всего: 78 |
Я считаю, что просто необходимо переделать структуру record, и переписать функцию под StringGrid.
-------------------- Ll 2 |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Да вроде и так все удобно... ИМХО хороший модуль
|
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
Спасибо VICTAR, за пример, работает все! А модуль действительно хороший, почти все операции стандартные с матрицами есть...
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
Сейчас копнул глубже столкнулся с проблемой:
функция обращения матрицы не желает работать ReverseMatrix(MPtr : MatrixPtr) : MatrixPtr; в приведенном выше коде ошибка выскакивает на 12 строке (StringGrid2.RowCount:=mtr2.MatrixRow;) то же самое и с умножением матрицы на матрицу... Пишет Access Volation at address... хотя умножение на число и транспонирование работают --------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Да, ты прав. Похоже проблема в самом модуле. Поэтому надо его как следует поизучать.
ЗЫ я нашел еще один похожий модуль, но я его пока еще не смотрел здесь |
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
Там все куда более наворочено(в приведенном новом модуле), а ошибка выскакивает уже в новой матрице которя расчитывается, кстати заметил определитель тоже не считает всегда 0...
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
По ходу, я погорячился, сказав, что модуль хороший... Определитель считается только тогда, когда матрица является квадратной. Плюс, я нашел еще несколько ошибок. Короче говоря, придется или конкретно исправлять этот модуль, или писать свой, или использовать Matrix32.
|
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
Ясно, чувствую придется так и делать, но matrix32 для моих задач довольно мудренный...
Кстати как вариант http://sources.codenet.ru/download/1157/TMatrix.html как потестю его отпишусь --------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
Пока могу сказать следущее: по функциональности модуль ничем не уступает matrix помоему даже нагляднее и удобнее организован ввод и другие моменты...
Особено понравилась возможность constructor Create(AArray: TMatrixData); overload; // Создаёт матрицу из массива я только не разобрался как помещать данные из Stringgrid... приходится юзать mtr.Items[i,j] Протестировал опять те же функции транспонирование работает, обращение нет, пишет якобы детерменант =0 поэтому не считает... похоже проблема в этом, прям тенденция какая то, очень станно не может же быть что все глючит... --------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Не работает все по той же причине, что дет-нант вычисляется только у квадратной матрицы.
mtr.Items[i,j] - правильный ход |
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
у меня даже NxN не считает... возможно ввожу не так что-то а так думаю и квадратная сгодилась бы
наверно алгоритм для неквадратных сложен... от того и не делают его нигде... --------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| VICTAR |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Только не могу понять это:
Они работаю явно не так как должны. Создаются пустые матрицы и при любом обращении к ее элементам возникает ошибка. |
||||
|
|||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Все, я нашел ошибку и в этом модуле
|
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Ок. Теперь все работает. Косяк был в том, что при созданиии TMatrix.Create(const ARows, ACols: Word); Origin был равен 0, а не 1, как должен быть по-умолчанию.
Выкладываю пример с основными действиями |
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
VICTAR, Спасибо большое за пример, теперь проверю точность операций этого модуля, тогда отпишусь об результате...
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
вообщем можно юзать вроде неплохо считает
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |