1つの変数で2次方程式の解を計算し、3つの条件がテストされているかどうかを判断するための基本的なC ++プログラミング演習

元の質問は、新人チュートリアルのC ++の例から来てい
ます-1つの未知数で2次方程式の根を見つけてください
ここに画像の説明を挿入します

実装方法は非常にシンプルで、最も基本的なC言語プログラムです。
以下は、新人チュートリアルによる回答です-

#include <iostream>
#include <cmath>
using namespace std;
 
int main() {
    
    
 
    float a, b, c, x1, x2, discriminant, realPart, imaginaryPart;
    cout << "输入 a, b 和 c: ";
    cin >> a >> b >> c;
    discriminant = b*b - 4*a*c;
    
    if (discriminant > 0) {
    
    
        x1 = (-b + sqrt(discriminant)) / (2*a);
        x2 = (-b - sqrt(discriminant)) / (2*a);
        cout << "Roots are real and different." << endl;
        cout << "x1 = " << x1 << endl;
        cout << "x2 = " << x2 << endl;
    }
    
    else if (discriminant == 0) {
    
    
        cout << "实根相同:" << endl;
        x1 = (-b + sqrt(discriminant)) / (2*a);
        cout << "x1 = x2 =" << x1 << endl;
    }
 
    else {
    
    
        realPart = -b/(2*a);
        imaginaryPart =sqrt(-discriminant)/(2*a);
        cout << "实根不同:"  << endl;
        cout << "x1 = " << realPart << "+" << imaginaryPart << "i" << endl;
        cout << "x2 = " << realPart << "-" << imaginaryPart << "i" << endl;
    }
 
    return 0;
}

ええと、私はこの機能をすぐに理解しました
が、テストするとき、
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
3つの状況は非常に煩わしいので、コンパイルして何度も実行する必要があります(明らかにこれはより高速です!ねえ!
これらの3つの状況を何度もテストする方法はありますかもう一度?。
ここに画像の説明を挿入します

カウンターを追加して、
ええと、完璧です〜

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    
    
	int count,counta,countb,countc;
	
	float det,x1,x2,a,b,c;
	float realPart,imaginaryPart;
	
	while(count != 1){
    
    
		cout << "please input the parameter:" << endl;
		cin >> a >> b >> c;
	
		det = b*b - 4*a*c;
	
			
		if(det > 0){
    
    
			cout << "the roots are real and different" << endl;
			x1 = (-b + sqrt(det))/(2*a);
			x2 = (-b - sqrt(det))/(2*a);
			cout << "x1 = " << x1 << endl;
			cout << "x2 = " << x2 << endl;
			counta = 1;

		}
	
		else if(det == 0){
    
    
			cout << "the root is equal" << endl;
			x1 = x2 = -b/(2*a);
			cout << "x1 = x2 =  "<< x1 << endl;
			countb = 1;

	
		}	
//	det<0 两个根是复数(跟高中讲的不太一样嗷) 两个复数根为共轭复根 
		else {
    
    
			cout << "一对共轭复根出现辽" << endl;
			
			realPart = -b/(2*a);
			imaginaryPart = ( -sqrt(det) ) / (2*a);
			
			if (imaginaryPart){
    
    
//				复数中的b不存在的情况 
				cout << "x1 = " << realPart << endl;
				cout << "x2 = " << realPart << endl;
				countc = 1;
			}
			else{
    
    
				cout << "x1 = " << realPart << '+' << imaginaryPart << 'i' << endl;
				cout << "x2 = " << realPart << '-' << imaginaryPart << 'i' << endl;
				countc = 1;//计数器 
			}
			

		}
			if(counta==1 && countb==1 && countc==1){
    
    
				count = 1;
			}
	}
	cout << "duang----------------------------------duang" << endl;
	cout << "已经试过了det>0 det=0 det<0 三种情况咯~" << endl;
	 
	
	
}

最後に、テストは正常に終了します。
(仕事量が増えたと思われるやこ
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_45704942/article/details/114959829