Программа вычисляет треугольную матрицу выше второго порядка(в дальнейшем по диагонали будем вычисляться диагональ ).
Обработку нулей на диагонали реализую потом. Матрица заполняется таким образ, что нулей нигде не возникает.
Вычисление матрицы точнее тогда, когда матрица меньшего порядка или когда матрица заполнена "удобными" для расчета числами.
Иногда значение элемента матрицы = -0, а иногда не происходит вычитание
Подскажите, как сделать, чтобы работало как нужно?
#include <iostream>
#include <time.h>
int main(){
srand(time(nullptr));
float** mtrx;
int power;
std::cout<<"Enter power: ";
std::cin>>power;
mtrx = new float*[power];
for(int i = 0; i < power; i++){
mtrx[i] = new float[power];
for(int j = 0; j < power; j++){
mtrx[i][j] = rand()%10 + 1;
}
}
std::cout<<"Matrix:"<<std::endl;
for(int i = 0; i < power; i++){
for(int j = 0; j < power; j++){
std::cout<<mtrx[i][j]<<" ";
}
std::cout<<std::endl;
}
std::cout<<std::endl<<std::endl;
for(int col = 0; col < power-1; col++){
for(int str = power-1; str>0; str--){
if(mtrx[str][col] != 0.0){
if(str - 1 >= 0 && mtrx[str-1][col] != 0){
float coeff = mtrx[str][col]/mtrx[str-1][col];
std::cout<<"Coeff: "<<coeff<<std::endl;
for(int col_num = 0; col_num < power ;col_num++){
mtrx[str - 1][col_num] *= coeff;
}
for(int col_num = col;col_num <str; col_num++){
mtrx[str][col_num] -= mtrx[str-1][col_num];
}
}
}
}
for(int i = 0; i < power; i++){
for(int j = 0; j < power; j++){
std::cout<<mtrx[i][j]<<" ";
}
std::cout<<std::endl;
}
return 0;
}
<code lang="cpp">
</code>