002:1元二次方程式の根を求めます

合計時間制限: 

1000ミリ秒
 
メモリ制限: 
65536kB
説明

式X1を使用して=(-b + SQRT(B * B-4 * C))/(2 *)、X2 =(-b - SQRT(B * B-4 * C))/(2 * a)は二次方程式AX見つける2ゼロに等しくない、請求、根の+ BX + C = 0。

エントリー
入力ライン、3つの浮動小数点数(それらの間の空間によって分離)、B、C、それぞれ方程式AX含む 2  係数の+ BX + C = 0。
輸出
方程式の解を示す出力Aライン。
もしB 2  = A * C * 4、二つの実根が等しく、出力形態:X1 = X2 = ....
B場合 2  。X2 = ...; X 1 = ...:> A * C * 4、二つの実根は、出力形式等しくない 、 X1> X2を。
B場合 2  。虚数部iが、すなわち、係数の虚数部がX1とX2より大きい虚数部に等しい、 - X2 =実数部; X1 =虚数部の実数部が+ I:<C * A * 4,2つの仮想根、出力があります係数は、実部が0を省略することができないです。レアル= -b /(2 *) 、虚部= SQRT(4 * * CB * B)/(2 * a)は

すべての実数部は5桁までの正確な必要があり、数字、記号の間にスペースはありません。
サンプル入力
入力サンプル1 
1.0 2.0 8.0 

サンプル入力2 
1 1 0
サンプル出力
出力例1つの。
X1 = -1.00000 + 2.64575i; X2 = -1.00000-2.64575i 

サンプル出力2 
X1 = 0.00000 + 1.00000i; X2 = 0.00000-1.00000i
1の#include <iostreamの>
 2の#include <math.h>の
 3の#include <cmath>
 4  使用して 名前空間をSTD。
5  
6  INT メイン(){    
 7      ダブル A = 1.0、B = 2.0、C = 8.0 8      ダブル X1 = 0.0、X2 = 0.0 9つの     ダブル EPS = 0.000001 10      // cinを>> B >> C。
11      のscanf(" %LF%LF%LF "、&​​、&B、&C)。
12      ダブルTMP = B * B - 4 * C。
13      であれば(TMP <EPS && TMP> - EPS){
 14          のprintf(" X1 = X2 =%5F。"、( - B)/(2 *)+ EPS)。
15      } そう であれば(TMP> EPS){
 16          、X1 =( - B + SQRT(TMP))/(2 * )。
17          X2 =( - B-SQRT(TMP))/(2 *)+ EPS。
18          であれば((X1-X2)> EPS){
 19              のprintf(" X1 =%5F; X2 =%5F "、X1 + EPS、X2 + EPS)。
20          } {
 21              のprintf(" X1 =%5F; X2 =%5F "、X2 + EPS、X1 + EPS)。
22          }
 23      } {
 24          のprintf(" X1 =%5F +%5fi;。。。。X2 =%5F - %5fi " 25          (-b)/(2 *)+ EPS、SQRT(-tmp)/ (2 *)+ EPS、( - B)/(2 *)+ EPS、SQRT(-tmp)/(2 *)+ EPS)。
26  
27      }
 28  
29  
30  
31  
32  戻り 0 ;
33 }

 

おすすめ

転載: www.cnblogs.com/geyang/p/12329708.html