【无题666】

#include
using namespace std;

string s;
/*
思路:
以逗号为分割,找到每一个分数
对于每一个分数
以/为分割,找出分母分子即可

la:这一个分数的开始位置
po:这一个分数的结束位置 
Ans:答案
Sum函数:求解这一个分数的值 
*/ 
double Sum(int x,int y){
	int a = 0 , b = 0;//a分子,b分母 
	bool f = 0;//f表示是否遇到/, 
	for (int i = x; i <= y; i++){
		if (s[i] == '/') {f = 1;continue;}
		if (!f) a = a*10+(s[i]-48);//没遇到/,计算分子 
		else b = b*10+(s[i]-48);//遇到/,计算分母 
	}
//	cout<
	return a*1.0/b;
}

int main(){
	cin>>s;
	int po = 0,la = 0; 
	s+=',';//以为以,为分界线,所以加一个逗号确保取出最后一个分数 
	int len = s.size();
	double Ans = 0;
	while (po < len){
		for (; po < len; po++) if (s[po] == ',') break;//找到逗号即找到一个分数 
		po--;//逗号的前一个是分数的结尾 
		Ans+=Sum(la,po);//计算分数 
		po+=2;//跨过/,找到下一个分数的起点 
		la = po;//标记下一个分数的起点 
	}
	printf("%.2lf",Ans);
	return 0;
}

你可能感兴趣的:(c++,算法,开发语言)