#include <iostream>
using namespace std;
int main() {
// your code goes here
#include <stdio.h>
#include <math.h>
#include"iostream"
#include"conio.h"
using namespace std;
void print_matrix(int str,int stb,double **mass)//вывод матрицы в консоль
{
for(int i=0;i<str;i++)
{
for(int j=0;j<stb;j++)
printf("a[%d][%d]=%f \t",i,j,mass[i][j]);
printf("\n");
}
printf("\n");
}
void print_x(int stb,double *x)//вывод значений неизвестных в консоль
{
for(int i=0;i<stb;i++)
printf("x[%d]=%f \t",i,x[i]);
printf("\n");
}
int rotation(int cnt_str,double **mass,double *&x)
{
int i,j,k;
x=new double [cnt_str];//выделение памяти для неизвестных
//прямой ход методом вращений
double a,b,c,s,t;
for(i=0;i<cnt_str;i++)
{
for(j=i+1;j<cnt_str;j++)
{
b=mass[j][i];
a=mass[i][i];
c=a/sqrt(a*a+b*b);
s=b/sqrt(a*a+b*b);
for(k=i;k<cnt_str+1;k++)
{
t=mass[i][k];
mass[i][k]=c*mass[i][k]+s*mass[j][k];
mass[j][k]=-s*t+c*mass[j][k];
}
}
}
//обратный ход метод Гаусса
for(i=cnt_str-1;i>=0;i--)
{
double summ=0.;
for(j=i+1;j<cnt_str;j++)
summ+=mass[i][j]*x[j];
summ=mass[i][cnt_str]-summ;
if(mass[i][i]==0)
return 0;
x[i]=summ/mass[i][i];
}
return 1;
}
int main()
{
int str=0,stb=0;
setlocale(LC_ALL,"Rus");
cout<<"Введите количество уравнений в СЛАУ: ";
cin>>str;
cout<<"Введите количество неизвестных в СЛАУ: ";
cin>>stb;
stb+=1;
double **mass=new double*[str];
for (int i=0;i<str;i++)
{
mass[i]=new double[stb];
for (int j=0;j<stb;j++)
{
if(j==stb-1)
cout<<"B"<<i+1<<":";
else
cout<<"A"<<i+1<<j+1<<":";
cin>>mass[i][j];
}
}
double *x;
if(rotation(str,mass,x)==1)//решение системы линейных уравнений методом вращений и печать результата при удачном выполнении
{
//print_matrix(str,stb,mass);
print_x(str,x);//вывод результата
}
else{printf("Error rotation\n");}
for(int i=0;i<str;i++) delete []mass[i];
delete []mass;
delete []x;
return 0;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgkjaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUiaW9zdHJlYW0iCiNpbmNsdWRlImNvbmlvLmgiCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIHByaW50X21hdHJpeChpbnQgc3RyLGludCBzdGIsZG91YmxlICoqbWFzcykvL9Cy0YvQstC+0LQg0LzQsNGC0YDQuNGG0Ysg0LIg0LrQvtC90YHQvtC70YwKewoJZm9yKGludCBpPTA7aTxzdHI7aSsrKQoJewoJCWZvcihpbnQgaj0wO2o8c3RiO2orKykKCQlwcmludGYoImFbJWRdWyVkXT0lZiBcdCIsaSxqLG1hc3NbaV1bal0pOwoJCXByaW50ZigiXG4iKTsKCX0KCXByaW50ZigiXG4iKTsKfQoKdm9pZCBwcmludF94KGludCBzdGIsZG91YmxlICp4KS8v0LLRi9Cy0L7QtCDQt9C90LDRh9C10L3QuNC5INC90LXQuNC30LLQtdGB0YLQvdGL0YUg0LIg0LrQvtC90YHQvtC70YwKewoJZm9yKGludCBpPTA7aTxzdGI7aSsrKQoJcHJpbnRmKCJ4WyVkXT0lZiBcdCIsaSx4W2ldKTsKCXByaW50ZigiXG4iKTsKfQoKaW50IHJvdGF0aW9uKGludCBjbnRfc3RyLGRvdWJsZSAqKm1hc3MsZG91YmxlIComeCkKewppbnQgaSxqLGs7Cng9bmV3IGRvdWJsZSBbY250X3N0cl07Ly/QstGL0LTQtdC70LXQvdC40LUg0L/QsNC80Y/RgtC4INC00LvRjyDQvdC10LjQt9Cy0LXRgdGC0L3Ri9GFCi8v0L/RgNGP0LzQvtC5INGF0L7QtCDQvNC10YLQvtC00L7QvCDQstGA0LDRidC10L3QuNC5CmRvdWJsZSBhLGIsYyxzLHQ7CmZvcihpPTA7aTxjbnRfc3RyO2krKykKewoJZm9yKGo9aSsxO2o8Y250X3N0cjtqKyspCgl7CgliPW1hc3Nbal1baV07CglhPW1hc3NbaV1baV07CgljPWEvc3FydChhKmErYipiKTsKCXM9Yi9zcXJ0KGEqYStiKmIpOwoJCWZvcihrPWk7azxjbnRfc3RyKzE7aysrKQoJCXsKCQl0PW1hc3NbaV1ba107CgkJbWFzc1tpXVtrXT1jKm1hc3NbaV1ba10rcyptYXNzW2pdW2tdOwoJCW1hc3Nbal1ba109LXMqdCtjKm1hc3Nbal1ba107CgkJfQoJfQp9Ci8v0L7QsdGA0LDRgtC90YvQuSDRhdC+0LQg0LzQtdGC0L7QtCDQk9Cw0YPRgdGB0LAKZm9yKGk9Y250X3N0ci0xO2k+PTA7aS0tKQp7CmRvdWJsZSBzdW1tPTAuOwoJZm9yKGo9aSsxO2o8Y250X3N0cjtqKyspCglzdW1tKz1tYXNzW2ldW2pdKnhbal07CnN1bW09bWFzc1tpXVtjbnRfc3RyXS1zdW1tOwppZihtYXNzW2ldW2ldPT0wKQpyZXR1cm4gMDsKeFtpXT1zdW1tL21hc3NbaV1baV07Cn0KcmV0dXJuIDE7Cn0KCmludCBtYWluKCkKewppbnQgc3RyPTAsc3RiPTA7CnNldGxvY2FsZShMQ19BTEwsIlJ1cyIpOwpjb3V0PDwi0JLQstC10LTQuNGC0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YPRgNCw0LLQvdC10L3QuNC5INCyINCh0JvQkNCjOiAiOwoJY2luPj5zdHI7Cgljb3V0PDwi0JLQstC10LTQuNGC0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0L3QtdC40LfQstC10YHRgtC90YvRhSDQsiDQodCb0JDQozogIjsKCWNpbj4+c3RiOwoJc3RiKz0xOwoJZG91YmxlICoqbWFzcz1uZXcgZG91YmxlKltzdHJdOwoJZm9yIChpbnQgaT0wO2k8c3RyO2krKykKCXsKCQltYXNzW2ldPW5ldyBkb3VibGVbc3RiXTsKCWZvciAoaW50IGo9MDtqPHN0YjtqKyspCgl7CglpZihqPT1zdGItMSkKCQljb3V0PDwiQiI8PGkrMTw8IjoiOwoJZWxzZQkKCWNvdXQ8PCJBIjw8aSsxPDxqKzE8PCI6IjsKCQljaW4+Pm1hc3NbaV1bal07Cgl9CgkKCX0KZG91YmxlICp4OwoJCgkJaWYocm90YXRpb24oc3RyLG1hc3MseCk9PTEpLy/RgNC10YjQtdC90LjQtSDRgdC40YHRgtC10LzRiyDQu9C40L3QtdC50L3Ri9GFINGD0YDQsNCy0L3QtdC90LjQuSDQvNC10YLQvtC00L7QvCDQstGA0LDRidC10L3QuNC5INC4INC/0LXRh9Cw0YLRjCDRgNC10LfRg9C70YzRgtCw0YLQsCDQv9GA0Lgg0YPQtNCw0YfQvdC+0Lwg0LLRi9C/0L7Qu9C90LXQvdC40LgKCQl7CgkJLy9wcmludF9tYXRyaXgoc3RyLHN0YixtYXNzKTsKCQlwcmludF94KHN0cix4KTsvL9Cy0YvQstC+0LQg0YDQtdC30YPQu9GM0YLQsNGC0LAKCQl9CgkJZWxzZXtwcmludGYoIkVycm9yIHJvdGF0aW9uXG4iKTt9CgkKCQlmb3IoaW50IGk9MDtpPHN0cjtpKyspIGRlbGV0ZSBbXW1hc3NbaV07CglkZWxldGUgW11tYXNzOwoJZGVsZXRlIFtdeDsKCQoJCnJldHVybiAwOwp9CgoJcmV0dXJuIDA7Cn0=