九度OJ 1103二次方程式計算器
タイトルの説明:
二次方程式計算機を設計する
入力:
各ケースはxに関する二次方程式式であり,単純化のために各係数は整数形式である.
出力:
各ケースは2つの実数(小さいから大きいまで出力し、中間はスペースで区切られている)を出力し、2桁の小数を保持します.解かない場合は「No Solution」を出力します.
サンプル入力:
サンプル出力:
私の考え方は、入力した方程式を標準式、すなわちax^2+bx+c=0の形式にすることです.この中には、同段階の項目を結合したり、項目を移動したりするなど、多くのステップがあります.
ここでは、等式を2つに分けて、等号を境界線として、等式の左右の両側にx^2、x、定数項の係数をそれぞれ求めて、それからそれぞれ差を作って係数a、b、cを求めます.
あとは二次方程式の公式法に従って解くだけでいいので、小数点に注意してください.
ここで係数を求める過程では,係数が複数ある場合,係数が負の場合などに注意する.
二次方程式計算機を設計する
入力:
各ケースはxに関する二次方程式式であり,単純化のために各係数は整数形式である.
出力:
各ケースは2つの実数(小さいから大きいまで出力し、中間はスペースで区切られている)を出力し、2桁の小数を保持します.解かない場合は「No Solution」を出力します.
サンプル入力:
x^2+x=3x+4
サンプル出力:
-1.24 3.24
私の考え方は、入力した方程式を標準式、すなわちax^2+bx+c=0の形式にすることです.この中には、同段階の項目を結合したり、項目を移動したりするなど、多くのステップがあります.
ここでは、等式を2つに分けて、等号を境界線として、等式の左右の両側にx^2、x、定数項の係数をそれぞれ求めて、それからそれぞれ差を作って係数a、b、cを求めます.
あとは二次方程式の公式法に従って解くだけでいいので、小数点に注意してください.
ここで係数を求める過程では,係数が複数ある場合,係数が負の場合などに注意する.
#include
#include
#include
#include
using namespace std;
void operate(string str,int &A,int &B,int &C){
for(int i=0;i=0 && str[i-1] == '-')
A = A - 1;
else
A += 1;
i = i + 3;
}
else{
if(i-1>=0 && str[i-1] == '-')
B = B -1;
else
B += 1;
i = i + 1;
}
}
else{
int temp = 0;
int j = i;
while(isdigit(str[i])){
temp = temp*10 + str[i] - '0';
i++;
}
if(j-1>=0 && str[j-1] == '-')
temp = 0 - temp;
if(i< str.length() && str[i] == 'x'){
if(i+1 < str.length() && str[i+1] == '^'){
A += temp;
i = i + 3;
}
else{
B += temp;
i = i + 1;
}
}
else
C += temp;
}
}
}
int main(){
string str;
while(cin>>str){
int j = 0;
for(int i=0;i