zoukankan      html  css  js  c++  java
  • 27. 求解一元二次方程

    一. 问题

    一元二次方程的一般形式为 ax2 + bx + c = 0,求出 x 的值。

    二. 思路

    因为已经明确说明了是二次的,所以我们不考虑 a = 0 的情况。在这里,我们选择利用求根公式计算方程的根。

    三. 代码实现

     1 void solution(double a, double b, double c) {
     2     double delta = b * b - 4 * a * c;
     3     if (delta < 0) {
     4         cout << "No solution." << endl;
     5     } else if (delta == 0) {
     6          double x = (-b) / (2 * a);
     7          cout << x << endl;
     8     } else {
     9         double x1 = ((-b) + sqrt(delta)) / (2 * a);
    10         double x2 = ((-b) - sqrt(delta)) / (2 * a);
    11 
    12         cout << "x1 = " << x1 << endl;
    13         cout << "x2 = " << x2 << endl;
    14     }
    15 }

    主函数测试:

     1 #include <iostream>
     2 #include <cmath>
     3 using namespace std;
     4 
     5 int main() {
     6     solution(1, -2, 1);
     7     solution(4, -4, 1);
     8 
     9     return 0;
    10 }

    代码中有几处需要说明:

    1. 函数直接输出了结果,并没有返回两个根的值。尽量不要通过引用参数返回值,这样作是一个不好的习惯。

    2. 当判别式等于 0 时,两根相等,但在函数中我们只输出了一个值。

  • 相关阅读:
    VTK 9.0.1 vtkContextDevice2D 问题
    VTK 中文
    VTK 剪切
    VTK Color Map
    VTK Camera
    VTK Light
    VTK Read Source Object
    VTK Procedural Source Object
    Qt 布局开发问题记录
    Grafana 系列 (7):圖表是否可以数据追踪 (drill down)?(转)
  • 原文地址:https://www.cnblogs.com/Hello-Nolan/p/13385804.html
Copyright © 2011-2022 走看看