#include <iostream>
#include <cmath>
#include <algorithm>
int main() {
const double eps = 1e-7; //для сравнения с нулём вещественных чисел
/*Коэффициенты системы уравнений будем хранить в матрице 2*3
Система уравнений вида
a1*x1+b1*x2=c1,
a2*x1+b2*x2=c2
в двумерном массиве будет храниться так:
{{a1, b1, c1},
{a2, b2, c2}}
*/
double **m = new double*[2];
for(int i = 0; i < 2; i++){
m[i] = new double[3];
}
std::cout << "Input a, b, c for " << i + 1 << " equation:\n";
for(int j = 0; j < 3; j++){
std::cin >> m[i][j];
/*
Решить систему можно методом Крамера:
det = a1*b2-a2*b1
det1 = c1*b2-c2*b1
det2 = a1*c2-a2*c1
x1 = det1/det
x2 = det2 / det
double det = m[0][0] * m[1][1] - m[1][0] * m[0][1];
double det1 = m[0][2] * m[1][1] - m[1][2] * m[0][1];
double det2 = m[0][0] * m[1][2] - m[1][0] * m[0][2];
if (std::abs(det) < 1e-7){
if (std::abs(det1) < 1e-7){
std::cout << "Infinity solutions\n";
else{
std::cout << "No solution\n";
double x1 = det1 / det;
double x2 = det2 / det;
std::cout << "x1 = " << x1 << std::endl;
std::cout << "x2 = " << x2 << std::endl;
//Освобождение выделенной динамической памяти
delete []m[i];
delete []m;
return 0;
#include <iostream>
#include <cmath>
#include <algorithm>
int main() {
const double eps = 1e-7; //для сравнения с нулём вещественных чисел
/*Коэффициенты системы уравнений будем хранить в матрице 2*3
Система уравнений вида
a1*x1+b1*x2=c1,
a2*x1+b2*x2=c2
в двумерном массиве будет храниться так:
{{a1, b1, c1},
{a2, b2, c2}}
*/
double **m = new double*[2];
for(int i = 0; i < 2; i++){
m[i] = new double[3];
}
for(int i = 0; i < 2; i++){
std::cout << "Input a, b, c for " << i + 1 << " equation:\n";
for(int j = 0; j < 3; j++){
std::cin >> m[i][j];
}
}
/*
Решить систему можно методом Крамера:
det = a1*b2-a2*b1
det1 = c1*b2-c2*b1
det2 = a1*c2-a2*c1
x1 = det1/det
x2 = det2 / det
*/
double det = m[0][0] * m[1][1] - m[1][0] * m[0][1];
double det1 = m[0][2] * m[1][1] - m[1][2] * m[0][1];
double det2 = m[0][0] * m[1][2] - m[1][0] * m[0][2];
if (std::abs(det) < 1e-7){
if (std::abs(det1) < 1e-7){
std::cout << "Infinity solutions\n";
}
else{
std::cout << "No solution\n";
}
}
else{
double x1 = det1 / det;
double x2 = det2 / det;
std::cout << "x1 = " << x1 << std::endl;
std::cout << "x2 = " << x2 << std::endl;
}
//Освобождение выделенной динамической памяти
for(int i = 0; i < 2; i++){
delete []m[i];
}
delete []m;
return 0;
}