#include #include #include #include bool GetData(double& A, double& B, double& C); std::vector> Solve(double A, double B, double C); int main() { setlocale(LC_ALL, "ru-RU"); double A, B, C; if (GetData(A, B, C)) { auto vec = Solve(A, B, C); for (int i = 0; i < vec.size(); ++i) { if (vec[0].second == INFINITY) { std::cout << vec[0].first << std::endl; break; } else { std::cout << vec[i].first << " = "; if (vec[i].second == static_cast(vec[i].second)) { std::cout << static_cast(vec[i].second) << std::endl; } else { std::cout << std::fixed << std::setprecision(4) << vec[i].second << std::endl; } } } } else { std::cout << "Данные введены не коректно!\n"; system("pause"); return 0; } system("pause"); return 0; } std::vector> Solve(double A, double B, double C) { std::vector> vec(2); if (A == 0 && C == 0) { vec[0].first = "ЛЮБОЕ Х ЯВЛЯЕТСЯ РЕШЕНИЕМ УРАВНЕНИЯ"; vec[0].second = INFINITY; return vec; } double diskr = ((pow(B, 2)) - (4 * A * C)); if (diskr < 0) { vec[0].first = "НЕРАВЕНСТВО РЕШЕНИЙ НЕ ИМЕЕТ"; vec[0].second = INFINITY; return vec; } else if (diskr == 0) { vec[0].first = "X1"; vec[0].second = (((B * (-1)) + (sqrt(diskr))) / (2 * A)); return vec; } else if (diskr > 0) { vec[0].first = "X1"; vec[0].second = (((B * (-1)) + (sqrt(diskr))) / (2 * A)); vec[1].first = "X2"; vec[1].second = (((B * (-1)) - (sqrt(diskr))) / (2 * A)); return vec; } } bool GetData(double& A, double& B, double& C) { bool flag = false; std::cout << "A = "; if (std::cin >> A) { flag = true; } else { flag = false; } std::cout << "B = "; if (std::cin >> B) { flag = true; } else { flag = false; } std::cout << "C = "; if (std::cin >> C) { flag = true; } else { flag = false; } return flag; }