1. 程式人生 > 實用技巧 >27. 求解一元二次方程

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 時,兩根相等,但在函式中我們只輸出了一個值。