Problem ID :d071. 3.一元二次方程式的根

New Thread

User float 跟int的question!

alex0301 SendIMessage
alex

d071. 3.一元二次方程式的根 | From: 211.22.52.6 | Post Date:2020-10-15 10:38:34.0

#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main () {
    int x,y,z;
    while(cin>>x>>y>>z) {
        double a,b,c,A,B;
        a=x;b=y;c=z;
        A=-b+sqrt(b*b-4*a*c)/2;
        B=-b-sqrt(b*b-4*a*c)/2;
        if((b*b-4*a*c)>0) {
            if(A>B) {
                cout<<setprecision(2)<<"Two different roots x1="<<A*a;
                cout<<setprecision(2)<<" x2="<<B*a<<endl;
            }
            else {
                cout<<setprecision(2)<<"Two different roots x1="<<B*a;
                cout<<setprecision(2)<<" x2="<<A*a<<endl;
            }
        }
        else if((b*b-4*a*c)==0) {
            cout<<setprecision(2)<<"Two same roots x="<<A*a<<endl; 
        }
        else if((b*b-4*a*c)<0) {
            cout<<setprecision(2)<<"No real root"<<endl;
        }
    }
}
為什麼2根會錯相同根顯示不出來(0.00)!!
 


文章類型: 一般 | Reply | Back
User Re:float 跟int的question!

alex0301 SendIMessage
alex

d071. 3.一元二次方程式的根 | From: 211.22.52.6 | Post Date:2020-10-15 10:42:57.0

更正!~
iomanip(fixed很好用...)
 
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main () {
    int x,y,z;
    while(cin>>x>>y>>z) {
        double a,b,c,A,B;
        a=x;b=y;c=z;
        A=-b+sqrt(b*b-4*a*c)/2;
        B=-b-sqrt(b*b-4*a*c)/2;
        if((b*b-4*a*c)>0) {
            if(A>B) {
                cout<<setprecision(2)<<"Two different roots x1="<<A/a;
                cout<<setprecision(2)<<" x2="<<B*a<<endl;
            }
            else {
                cout<<setprecision(2)<<"Two different roots x1="<<B/a;
                cout<<setprecision(2)<<" x2="<<A/a<<endl;
            }
        }
        else if((b*b-4*a*c)==0) {
            cout<<fixed<<setprecision(2)<<"Two same roots x="<<A/a<<endl; 
        }
        else if((b*b-4*a*c)<0) {
            cout<<setprecision(2)<<"No real root"<<endl;
        }
    }
}
 
 


文章類型: 一般 | Reply | Back
User Re:float 跟int的question!

alex0301 SendIMessage
alex

d071. 3.一元二次方程式的根 | From: 211.22.52.6 | Post Date:2020-10-15 12:45:29.0

#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main () {
    int x,y,z;
    while(cin>>x>>y>>z) {
        double a,b,c,A,B;
        a=x;b=y;c=z;
        A=-b+sqrt(b*b-(4*a*c))/2;
        B=-b-sqrt(b*b-(4*a*c))/2;
        if((b*b-(4*a*c))>0) {
            if(A>B) {
                cout<<fixed<<setprecision(2)<<"Two different roots x1="<<A/a+1;
                cout<<setprecision(2)<<" , x2="<<B/a+1<<endl;
            }
            else {
                cout<<setprecision(2)<<"Two different roots x1="<<B/a+1;
                cout<<setprecision(2)<<" , x2="<<A/a+1<<endl;
            }
        }
        else if((b*b-(4*a*c))==0) {
            cout<<fixed<<setprecision(2)<<"Two same roots x="<<A/a<<endl; 
        }
        else if((b*b-(4*a*c))<0) {
            cout<<setprecision(2)<<"No real root"<<endl;
        }
    }
}


大致上應該對了!
為什麼+1(1,2,-1)就對了??
還是NA(44分)
 


文章類型: 一般 | Reply | Back
User Re:float 跟int的question!

sagit SendIMessage
sagit

d071. 3.一元二次方程式的根 | From: 175.182.190.178 | Post Date:2020-10-15 23:41:17.0

        A=(-b+sqrt(b*b-(4*a*c)))/(2*a);
你公式本身就錯了,只有在 a==1 的某些情況才會對吧
 


文章類型: 一般 | Reply | Back
User Re:float 跟int的question!

alex0301 SendIMessage
alex

d071. 3.一元二次方程式的根 | From: 185.191.171.8 | Post Date:2020-10-18 15:34:10.0

那要怎麼改?
不是 -B(+-)根號B^2-4AC嗎 
 


文章類型: 一般 | Reply | Back
User Re:float 跟int的question!

sagit SendIMessage
sagit

d071. 3.一元二次方程式的根 | From: 123.204.123.20 | Post Date:2020-10-18 17:07:28.0

那要怎麼改?
不是 -B(+-)根號B^2-4AC嗎 

我不是寫給你看了嗎?請看紅色的字,分母的部分是 2*a 


文章類型: 一般 | Reply | Back

New Thread

ZeroJudge Forum