#include #include #include using list_type = std::list; class QuadraticEquation { private: double m_a{}; double m_b{}; double m_c{}; public: QuadraticEquation(double a = 1, double b = 1, double c = 1) : m_a{ a }, m_b{ b }, m_c{ c } { } list_type getSolutions() { double discriminant{ (m_b * m_b) - 4 * m_a * m_c }; if (discriminant > 0) { return list_type{((-m_b - sqrt(discriminant)) / (2 * m_a)), ((-m_b + sqrt(discriminant)) / (2 * m_a))}; } else if (discriminant == 0) { return list_type{ -m_b / (2 * m_a) }; } else { return list_type{}; } } }; double getDouble(const char abc = '-') { std::cout << "Enter '" << abc << "' value: "; double value{}; std::cin >> value; return static_cast(value); } void printSolutions(const list_type &solutions) { if (solutions.size() > 0) { for (int count{ 1 }; const auto & solution : solutions) { std::cout << "Solution #" << count << " is: " << solution << '\n'; ++count; } } else { std::cout << "This equation does not have a real solution.\n"; } } int main() { QuadraticEquation equation1{ getDouble('a'), getDouble('b'), getDouble('c') }; auto solutions{ equation1.getSolutions() }; printSolutions(solutions); return 0; }