Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 00:54   #1
Ivan3000
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 17
Восклицание Написать матричный калькулятор на Delphi

Надо,чтобы программа работала с двумя матрицами и выполняла следующие действия:
1.Определитель
2.Обратная матрица
3.Сложение,вычитание
4.Умножение,деление
5.Транспонирование матриц
Ввод матриц осуществить в StringGrid!Вывод можно в Memo,можно в StringGrid!Размерность матриц бесконечна!
Срочно надо!
Заранее благодарю за помощь!!!

Последний раз редактировалось Ivan3000; 26.05.2009 в 11:46. Причина: Не отвечают
Ivan3000 вне форума Ответить с цитированием
Старый 26.05.2009, 13:50   #2
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

Код:
function DetMatrix(MPtr : MatrixPtr) : MatrixElement;

var

TempPtr : MatrixPtr;

i,j     : byte;

Sum     : MatrixElement;

begin

if IsSquareMatrix(MPtr) then begin

   if not IsSingleMatrix(MPtr) then begin

     TempPtr:= nil;

     Sum:= 0;

     for j:= 1 to GetMatrixCol(MPtr) do begin

       AssignMatrix(TempPtr,ExcludeVectorFromMatrix(MPtr,1,j));

       Sum:= Sum+IntPower(-1,j+1)*GetMatrixElement(MPtr,1,j)*DetMatrix(TempPtr);

     end;

     DeleteMatrix(TempPtr);

     DetMatrix:= Sum;

   end else DetMatrix:= GetMatrixElement(MPtr,1,1);

end else DetMatrix:= 0;

end;
- определитель

Код:
function TransponeMatrix(MPtr : MatrixPtr) : MatrixPtr;

var

TempPtr : MatrixPtr;

i,j     : byte;

begin

if (MPtr <> nil) or (MPtr^.MatrixArray <> nil) then with MPtr^ do begin

   TempPtr:= CreateMatrix(MatrixCol,MatrixRow);

   for i:= 1 to MatrixRow do

     for j:= 1 to MatrixCol do

       SetMatrixElement(TempPtr,j,i,GetMatrixElement(MPtr,i,j));

   TransponeMatrix:= TempPtr;

end else TransponeMatrix:= nil;

end;
-транспонирование
Код:
function ReverseMatrix(MPtr : MatrixPtr) : MatrixPtr;

var

TempPtr     : MatrixPtr;

Determinant : MatrixElement;

begin

if MPtr <> nil then begin

   TempPtr:= nil;

   AssignMatrix(TempPtr,CreateAppendixMatrix(MPtr));

   AssignMatrix(TempPtr,TransponeMatrix(TempPtr));

   Determinant:= DetMatrix(MPtr);

   if (TempPtr = nil) or (Determinant = 0) then begin

     DeleteMatrix(TempPtr);

     ReverseMatrix:= nil;

     Exit;

   end;

   AssignMatrix(TempPtr,MultipleMatrixOnNumber(TempPtr,1/Determinant));

   ReverseMatrix:= TempPtr;

end else ReverseMatrix:= nil;

end;

 

 

 

function MultipleMatrixOnNumber(MPtr : MatrixPtr;Number : MatrixElement) : MatrixPtr;

var

TempPtr : MatrixPtr;

i,j     : byte;

begin

if MPtr <> nil then with MPtr^ do begin

   TempPtr:= CreateMatrix(MatrixRow,MatrixCol);

   if TempPtr = nil then begin

     MultipleMatrixOnNumber:= nil;

     Exit;

   end;

   for i:= 1 to MatrixRow do

     for j:= 1 to MatrixCol do

       SetMatrixElement(TempPtr,i,j,GetMatrixElement(MPtr,i,j)*Number);

   MultipleMatrixOnNumber:= TempPtr;

end else MultipleMatrixOnNumber:= nil;

end;

 

 

function MultipleMatrixOnMatrix(MPtr1,MPtr2 : MatrixPtr) : MatrixPtr;

var

TempPtr : MatrixPtr;

i,j,k   : byte;

begin

if (MPtr1 <>  nil) and (MPtr2 <> nil) then begin

   TempPtr:= CreateMatrix(MPtr1^.MatrixRow,MPtr2^.MatrixCol);

   if TempPtr = nil then begin

     MultipleMatrixOnMatrix:= nil;

     Exit;

   end;

   for i:= 1 to TempPtr^.MatrixRow do

     for j:= 1 to TempPtr^.MatrixCol do

       for k:= 1 to MPtr1^.MatrixCol do

         SetMatrixElement(TempPtr,i,j,GetMatrixElement(TempPtr,i,j)+

           GetMatrixElement(MPtr1,i,k)*GetMatrixElement(MPtr2,k,j));

   MultipleMatrixOnMatrix:= TempPtr;

end else MultipleMatrixOnMatrix:= nil;

end;

 

 

 

function AddMatrixOnMatrix(MPtr1,MPtr2 : MatrixPtr) : MatrixPtr;

var

TempPtr : MatrixPtr;

i,j,k   : byte;

begin

if (MPtr1 <>  nil) and (MPtr2 <> nil) then begin

   TempPtr:= CreateMatrix(MPtr1^.MatrixRow,MPtr2^.MatrixCol);

   if TempPtr = nil then begin

     AddMatrixOnMatrix:= nil;

     Exit;

   end;

   for i:= 1 to TempPtr^.MatrixRow do

     for j:= 1 to TempPtr^.MatrixCol do

       SetMatrixElement(TempPtr,i,j,GetMatrixElement(Mptr1,i,j)+

         GetMatrixElement(MPtr2,i,j));

   AddMatrixOnMatrix:= TempPtr;

end else AddMatrixOnMatrix:= nil;

end;

 

 

function SubMatrixOnMatrix(MPtr1,MPtr2 : MatrixPtr) : MatrixPtr;

var

TempPtr : MatrixPtr;

i,j,k   : byte;

begin

if (MPtr1 <>  nil) and (MPtr2 <> nil) then begin

   TempPtr:= CreateMatrix(MPtr1^.MatrixRow,MPtr2^.MatrixCol);

   if TempPtr = nil then begin

     SubMatrixOnMatrix:= nil;

     Exit;

   end;

   for i:= 1 to TempPtr^.MatrixRow do

     for j:= 1 to TempPtr^.MatrixCol do

       SetMatrixElement(TempPtr,i,j,GetMatrixElement(MPtr1,i,j)-

         GetMatrixElement(MPtr2,i,j));

   SubMatrixOnMatrix:= TempPtr;

end else SubMatrixOnMatrix:= nil;

end;
обратная ;умножение на число; умножение на матрицу ;сложение ;вычитание DRKB-рулит
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Старый 26.05.2009, 14:23   #3
Ivan3000
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 17
По умолчанию

Большое спасибо,но мне надо без MatrixElement!Одними процедурами!
Ivan3000 вне форума Ответить с цитированием
Старый 26.05.2009, 14:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
мне надо без MatrixElement!Одними процедурами!
Most Unknow фраза...
Так что ли:
Код:
Procedure DetMatrix(MPtr : MatrixPtr,var m:MatrixElement);
...
     m:= Sum;

   end else m:= GetMatrixElement(MPtr,1,1);

end else m:= 0;
...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.05.2009, 18:39   #5
Ivan3000
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 17
По умолчанию

Без использования компонента Matrix в Delphi!Помогите,пожалуйста!

Последний раз редактировалось Ivan3000; 26.05.2009 в 22:34.
Ivan3000 вне форума Ответить с цитированием
Старый 26.05.2009, 22:35   #6
Ivan3000
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 17
По умолчанию

Помогите,пожалуйста!
Ivan3000 вне форума Ответить с цитированием
Старый 08.07.2009, 18:15   #7
Tweety7
Новичок
Джуниор
 
Регистрация: 08.07.2009
Сообщений: 2
По умолчанию

ооо=) мне тоже надо такое...
ток мне вообще тупо только + - и *
ввод данных в стрингрид=)
пожалуйстааа напишите в асю, я тупая как пробка в програмирование=))

559 - 334 -559

спасибо всем заранее
Tweety7 вне форума Ответить с цитированием
Старый 08.07.2009, 18:34   #8
Tweety7
Новичок
Джуниор
 
Регистрация: 08.07.2009
Сообщений: 2
По умолчанию

а скажите я никак не могу ивану на почту написать хотя бы?
Tweety7 вне форума Ответить с цитированием
Старый 08.07.2009, 19:00   #9
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Все эти ваши матрицы шматрицы просто нереально жёсткий бойан.
Юзайте поиск. За всю историю форума таких задач было перелопачена целая куча.

Весь кодинг будет заключаться в copy/paste и даже если ты прогулял все лекции в универе и дерево умнее тебя, то ты всё равно это напишешь.
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 10.05.2012, 09:22   #10
hhe
Новичок
Джуниор
 
Регистрация: 10.05.2012
Сообщений: 1
По умолчанию

Код матричного калькулятора в Delphi 7.
1. Вычисление определителя
2. Транспонирование матрицы
3. Обратная матрица
4. Произведение матриц
5. Ввод вектора b из 4-х елементов
6.Решение матричного уравнения Ax=B с проверкой

Предусмотреть вывод результатов на рабочий лист Excel.



Заранее большое спасибо!
hhe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матричный метод решения системы линейных уровнений на С++ kykysya Помощь студентам 2 20.11.2008 21:09
Калькулятор на delphi noniMIX Софт 7 10.11.2008 23:03
калькулятор в Delphi =XAM= Помощь студентам 2 07.03.2008 19:26
Плиз помогите калькулятор в Delphi написать!!!! intro Помощь студентам 2 11.12.2007 10:16