fork download
  1. #include <iostream>
  2. #include <cassert>
  3. #include <cmath>
  4.  
  5. bool solve_quadratic(double a, double b, double c, double& x1, double& x2)
  6. {
  7. assert(a != 0);
  8.  
  9. const double delta = b * b - 4 * a * c;
  10. if (delta < 0) {
  11. return false;
  12. }
  13. if (delta == 0) {
  14. x1 = -b / (2 * a);
  15. x2 = x1;
  16. } else {
  17. const double sqrt_delta = sqrt(delta);
  18. x1 = (-b + sqrt_delta) / (2 * a);
  19. x2 = (-b - sqrt_delta) / (2 * a);
  20. }
  21. return true;
  22. }
  23.  
  24. void output_result_of_quadratic(double a, double b, double c)
  25. {
  26. double x1;
  27. double x2;
  28.  
  29. std::cout << "For : " << a << " x^2 + " << b << " x + " << c << " = 0" << std::endl;
  30. if (solve_quadratic(a, b, c, x1, x2)) {
  31. if (x1 == x2) {
  32. std::cout << "The only solution is x: " << x1 << std::endl;
  33. } else {
  34. std::cout << "The solutions are : "<< x1 << " and " << x2 << std::endl;
  35. }
  36. } else {
  37. std::cout << "No real solution." << std::endl;
  38. }
  39. }
  40.  
  41. int main()
  42. {
  43. output_result_of_quadratic(1, -2, 1); // 1
  44. output_result_of_quadratic(1, 0, 1); // complex
  45. output_result_of_quadratic(1, -5, 6); // 2, 3
  46.  
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0s 3300KB
stdin
Standard input is empty
stdout
For : 1 x^2 + -2 x + 1 = 0
The only solution is x: 1
For : 1 x^2 + 0 x + 1 = 0
No real solution.
For : 1 x^2 + -5 x + 6 = 0
The solutions are : 3 and 2