Facebook
From ---, 3 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 354
  1. #include <cmath>
  2. #include <iostream>
  3. #include <list>
  4.  
  5. using list_type = std::list<double>;
  6.  
  7. class QuadraticEquation
  8. {
  9. private:
  10.         double m_a{};
  11.         double m_b{};
  12.         double m_c{};
  13. public:
  14.         QuadraticEquation(double a = 1, double b = 1, double c = 1) :
  15.                 m_a{ a },
  16.                 m_b{ b },
  17.                 m_c{ c }
  18.         {
  19.         }
  20.         list_type getSolutions()
  21.         {
  22.                 double discriminant{ (m_b * m_b) - 4 * m_a * m_c };
  23.                 if (discriminant > 0)
  24.                 {
  25.                         return list_type{((-m_b - sqrt(discriminant)) / (2 * m_a)),
  26.                                                                         ((-m_b + sqrt(discriminant)) / (2 * m_a))};
  27.                 }
  28.                 else if (discriminant == 0)
  29.                 {
  30.                         return list_type{ -m_b / (2 * m_a) };
  31.                 }
  32.                 else
  33.                 {
  34.                         return list_type{};
  35.                 }
  36.         }
  37. };
  38.  
  39. double getDouble(const char abc = '-')
  40. {
  41.         std::cout << "Enter '" << abc << "' value: ";
  42.         double value{};
  43.         std::cin >> value;
  44.         return static_cast<double>(value);
  45. }
  46.  
  47. void printSolutions(const list_type &solutions)
  48. {
  49.         if (solutions.size() > 0)
  50.         {
  51.  
  52.                 for (int count{ 1 }; const auto & solution : solutions)
  53.                 {
  54.                         std::cout << "Solution #" << count << " is: " << solution << '\n';
  55.                         ++count;
  56.                 }
  57.         }
  58.         else
  59.         {
  60.                 std::cout << "This equation does not have a real solution.\n";
  61.         }
  62. }
  63.  
  64. int main()
  65. {
  66.         QuadraticEquation equation1{ getDouble('a'), getDouble('b'), getDouble('c') };
  67.  
  68.         auto solutions{ equation1.getSolutions() };
  69.  
  70.         printSolutions(solutions);
  71.        
  72.         return 0;
  73. }