7-33 有理数加法 (15 分)C++

#include 
#include 
using namespace std;
/*
*要解决几个问题
*输入的问题
*求和的问题
*化简的问题
*/
int Min(int a,int b) {
     
	return (a > b) ? b : a;
}

int main()
{
     
	int Min(int a, int b);
	//输入的问题
	int a, b, c, d;
	char s1, s2,s3;
	cin >> a >> s1 >> b;
	cin.get(s2);
	cin >> c >> s3 >> d;
	//求和的问题
	int deno = b * d;//分母
	int mole = a * d + b *c;//分子
	//化简问题
	//找分子分母中大的,然后遍历
	int factor = 0;
	int init = 1;
	for (; init <= Min(deno, mole); ++init) {
     
		if (deno % init == 0) {
     
			if (mole % init == 0) {
     
				factor = init;
			}
		}
	}
	if (deno / factor == 1) {
     
		cout << mole / factor << endl;
	}
	else {
     
		cout << mole / factor << "/" << deno / factor << endl;
	}
	

	return 0;
}

你可能感兴趣的:(PTA练习)