И снова возможно глупые вопросы. Нужно посчитать определитель матрици через её триангуляцию(приведение к треугольному виду). В чем проблемам. Оно не треангулирует если матрица больше 3х3. Если кому не сложно будет разобраться в моем говнокоде буду благодарен.
//подключаемые библиотеки
#include <iostream>
#include <vector>
#include <cmath>
//Класс матрици
using namespace std;
class matrix{
private:
int size;
vector<vector<int> > mat;
int swapCount;
public:
matrix(){cout<<"Exploit"<<endl;};
void getparam(){
cout<<"Введите размерность"<<endl;
cin>>size;
mat.reserve(size);
for(int i=0;i<size;i++){
mat[i].reserve(size);
}
cout<<"Заполните матрицу"<<endl;
for(int i=0; i<size;i++){
for(int j=0;j<size;j++){
cout<<"Елемент х["<<i<<"]["<<j<<"] = ";
cin>>mat[i][j];
}
}
}
int max_col(int i){
double max= abs(mat[i][i]);
int maxPos= size-1;
for(int j=i+1; j<size;j++){
double element = abs(mat[j][i]);
if(element>max){
max=element;
maxPos=i;
}
}
return maxPos;
}
int triangulat(){
swapCount=0;
for(int i=0;i<size;i++){
int imax= max_col(i);
if(i != imax){
swap(mat[i],mat[imax]);
++swapCount;
}
for(int j = i+1; j<size;j++){
double mul = -mat[j][i]/mat[i][i];
for(int k = i;k<size; k++){
mat[j][k] += mat[i][k]*mul;
}
}
}
return swapCount;
}
void print(){
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
cout<<mat[i][j]<<" ";
}
cout<<""<<endl;
}
}
~matrix(){};
double Opredel(){
double opredel=0;
for(int i=0;i<size;i++){
opredel*=mat[i][i];
}
return opredel;
}
};
//Основной модуль программы
int main(){
matrix b;
b.getparam();
b.print();
cout<<""<<endl;
int swapc=b.triangulat();
b.print();
double opredel;
if(swapc % 2 == 0){
opredel = b.Opredel();
}else{
opredel = b.Opredel();
opredel *= -1;
}
cout<<""<<endl;
cout<<"Определитель этой матрици равен = " << opredel<<endl;
return 0;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть такая строка кода: float (*func4(double)(void))[10];Не могу понять, что это такое
Начал делать масштабный проект через консольное приложение, с мыслью «вот сейчас наберусь опыта в кодописании, а потом просто подключу интерфейс,...
Какие-то ошибки в коде, функция поиска просто выводит последнего человека, внесённого в список, а должна выводить блондина с максимальным...