IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Определитель матрицы - рекурсия?, C++ Builder
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 104
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Задание такое:
9. Создать класс Matrix для работы с квадратными матрицами. Обязательно должны быть реализованы: операции сложения, умножения, умножения на скаляр, транспонирования и вычисления определителя.
Все работает правильно, кроме определителя...
Вот, что я сделал:

class Matrix {
public:
int n; //Ðàçìåðíîñòü ìàòðèöû n - размерность матрицы + 1

...

int Array[10][10]; //Ñàìà ìàòðèöà
int Opr(){ //íàõîæäåíèå îïðåäåëèòåëÿ ìàòðèöû
int d=0; //d=E(aij*Aij)
if (this->n==3) return (this->Array[1][1])*(this->Array[2][2])-(this->Array[1][2])*(this->Array[2][1]);
else
for (int i=1; i<(this->n); i++)
for (int j=1; j<(this->n); j++)
d+=(this->Add(i,j))*(this->Array[i][j]);
return d;
};

int Add(int k,int l){ //äîïîëíåíèå k,l
Matrix C;
C.n=(this->n)-1;
int i,j;
for (int i=1; i<k; i++){
for (int j=1; j<l; j++)
C.Array[i][j]=this->Array[i][j];
for (j=l+1; j<(this->n); j++)
C.Array[i][j-1]=this->Array[i][j];
};
for (i=k+1; i<(this->n); i++){
for (j=1; j<l; j++)
C.Array[i-1][j]=this->Array[i][j];
for (j=l+1; j<(this->n); j++)
C.Array[i-1][j-1]=this->Array[i][j];
};
if ((k+l)%2==1) return ((-1)*(C.Opr()));
else return (C.Opr());
};

...

};



А обращаюсь к этим функциям так:


Form1->Edit2->Text=IntToStr(A.Opr());


В результате для матриц 2х2 работает нормально smile.gif, а для матриц с большей размерностью выдает некоторое число, которое не является определителем матрицы...

Кстати, а как определитель матрицы по-английски звучит?


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


В следующай раз пользуйся поиском. Вот тут есть решение на Паскале, перевести сможешь ?

Массивы. Матрицы. Типичные задачи.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 104
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Постараюсь. Спасибо!


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 12:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name