。。。这道题就是根据等号分成两部分,然后分别算出来系数和总的和,最后除一下就好
题目在这里
为什么我一直记不住setprecision怎么拼
#include <iomanip>
头文件,setprecision控制输出数字位数
c++里面存在-0,所以需要特判
下面是代码
#include <iostream>
#include <iomanip>
#include <string>
#include <cstring>
#include <cmath>
using namespace std;
int main() {
int temp=1;
int shu=0;
string a;
cin>>a;
double num=0;
int flag=0;
double sum=0;
int index=0;
if(a[0]=='y'){
cout<<"y="<<0.000<<endl;
}
for(int i=0;i<a.length();i++){
if(a[i]=='='){
flag=1;
sum-=temp*shu;
shu=0;
temp=1;
}
if(flag==0){
if(a[i]=='-'){
sum-=temp*shu;
shu=0;
temp=-1;
}else if(a[i]=='+'){
sum-=temp*shu;
shu=0;
temp=1;
}
if(a[i]>='0'&&a[i]<='9'){
if(shu==0){
shu=a[i]-'0';
}else{
shu=shu*10+a[i]-'0';
}
}
if(a[i]>='a'&&a[i]<='z'){
if(shu==0){
num+=temp*1;
}else{
num+=temp*shu;
}
index=i;
shu=0;
}
}
if(flag==1){
if(a[i]=='-'){
sum+=temp*shu;
shu=0;
temp=-1;
}else if(a[i]=='+'){
sum+=temp*shu;
shu=0;
temp=1;
}
if(a[i]>='0'&&a[i]<='9'){
if(shu==0){
shu=a[i]-'0';
}else{
shu=shu*10+a[i]-'0';
}
}
if(a[i]>='a'&&a[i]<='z'){
if(shu==0){
num-=temp*1;
}else{
num-=temp*shu;
}
index=i;
shu=0;
}
if(i==a.length()-1){
sum+=temp*shu;
}
}
}
double w=sum/num;
cout<<a[index]<<'=';
if(w==0){
cout<<"0.000"<<endl;
return 0;
}
cout<<fixed<<setprecision(3)<<w<<endl;
return 0;
}