iT邦幫忙

0

一元二次方程式公式解C++ oop

我寫出來的程式都是架構化的,可是有規定main檔,所以一定要用oop寫
題目是 求一元二次方程式的公式解

#include<math.h>
#include
using namespace std;

class Quadratic{
public:
Quadratic(double _a, double _b, double _c){
a=_a;
b=_b;
c=_c;
};
void solver();
//一元二次方程式公式解解出方程式
void print();
// print() print the answers in the form m+ni,
//where m is the real part and n is the imaginary part

private:
	double a;
	double b;
	double c;
	double real, imag;

};

void Quadratic::solver(){
double ans;
int j;
double m,n;
ans=bb-4ac;
if(ans<0)
ans=abs(ans);
ans=pow(ans,0.5);
for(int i;i<b
b;i++){
if(ans==ii)
j=j+1;
}
if(j==0){
cout<<-b<<"_"<<ans/2
a<<endl;
}
else{
m=(-b+ans)/2a;
cout<<m<<"_0"<<endl;
n=(-b-ans)/2
a;
cout<<n<<"_0"<<endl;
}
}

void Quadratic::print(){

}

//我不知道如何把solver的cout移動到print()裡

int main(){
double a, b, c;
cout<<"input a,b,c";
cin >> a >> b >> c;
Quadratic formula(a, b, c);
formula.solver();
return 0;
}
//main檔不可以動

2 個回答

2
海綿寶寶
iT邦超人 1 級 ‧ 2019-03-20 20:49:06
最佳解答

我跟你剛好相反
我寫的程式都沒有架構化
麻花捲型的程式碼

看看合不合用

#include <math.h>
#include <iostream>
using namespace std;

class Quadratic{
public:
Quadratic(double _a, double _b, double _c){
a=_a;
b=_b;
c=_c;
};
void solver();
//一元二次方程式公式解解出方程式
void print();
// print() print the answers in the form m+ni,
//where m is the real part and n is the imaginary part

private:
	double a;
	double b;
	double c;
	double real, imag;
	int flag;
	double real_1, imag_1;
	double real_2, imag_2;
};

void Quadratic::solver(){
double ans;
int j;
double m,n;
ans=b*b-4*a*c;
if(ans<0)
ans=abs(ans);
ans=pow(ans,0.5);
for(int i;i<(b*b);i++){
if(ans==(i*i))
j=j+1;
}
flag = j;
if(j==0){
    //std::cout<<-b<<"_"<<ans/(2*a)<<endl;
    real_1 = -1 * b;
    imag_1 = ans / (2*a);
}
else{
    m=(-b+ans)/(2*a);
    // cout<<m<<"_0"<<endl;
    real_1 = m;
    imag_1 = 0;
    n=(-b-ans)/(2*a);
    // cout<<n<<"_0"<<endl;
    real_2 = n;
    imag_2 = 0;
}
    print();
}

void Quadratic::print(){
    if (flag==0) {
        cout << real_1 << "+" << imag_1 << "i" << endl;
    } else {
        cout << real_1 << "+" << imag_1 << "i" << endl;
        cout << real_2 << "+" << imag_2 << "i" << endl;
    }
}

//我不知道如何把solver的cout移動到print()裡

int main(){
double a, b, c;
cout<<"input a,b,c";
cin >> a >> b >> c;
Quadratic formula(a, b, c);
formula.solver();
return 0;
}
//main檔不可以動
看更多先前的回應...收起先前的回應...
sunnyyeh iT邦新手 5 級 ‧ 2019-03-21 23:23:35 檢舉

凹屋 可以用!!非常謝謝你
另外 我想詢問一下
為什麼main檔那裡到數第二三行 需要打fomula?
oop初學 有很多疑惑QQ

小魚 iT邦高手 1 級 ‧ 2019-03-22 07:34:22 檢舉

formula 是變數名稱,
就像 int i 裡面的 i 一樣,
你喜歡叫 honey 也可以...

我最不會舉例
你就隨便看看就好了
喜不喜歡都不收錢...

假設網拍上有賣一個「只會解一元二次方程式的計算機」
上面只有一個小螢幕和一個按鈕
那麼整個流程大概如下:
1.描述這個商品的規格就是 Quadratic
2.買了一個商品,為了跟別人買的做區隔,取個名字(叫 formula)
3.下標時要告訴賣家三個數字,賣家把他設定進去(formula(a,b,c))
4.使用方法就是按下那個按鈕 solver,然後答案就會顯示在螢幕上

sunnyyeh iT邦新手 5 級 ‧ 2019-03-23 18:35:05 檢舉

喔喔原來 非常感謝你們~~~

sunnyyeh iT邦新手 5 級 ‧ 2019-03-23 18:35:36 檢舉

新手能預見你們幫忙 真的大感謝!

1
小魚
iT邦高手 1 級 ‧ 2019-03-20 18:46:13

好像沒規定一定要移到print中,
如果真的要這樣做,
不如把Quadratic class新增一個解答的變數,
解題的時候先把答案紀錄在變數中,
print的時候直接將變數列印出來.

sunnyyeh iT邦新手 5 級 ‧ 2019-03-21 23:21:49 檢舉

喔喔好的 我下次遇到這問題會再試看看的 非常謝謝您!

sunnyyeh iT邦新手 5 級 ‧ 2019-03-21 23:22:15 檢舉

/images/emoticon/emoticon41.gif

我要發表回答

立即登入回答