【C的分数四则运算的实现】

C的分数四则运算的实现

#include<iostream>
using namespace std;
#include<math.h>
int gcm(int a, int b)	//最大公约数
{
    
    
	int t;
	if (b > a)
	{
    
    
		t = b;
		b = a;
		a = t;
	}
	if (a % b == 0) return b;
	else gcm(b, a % b);
}
class Fraction {
    
    	//定义的分数类
public:
	int up = 0;
	int down = 0;
};
void reduction(int a,int b,bool flag){
    
    	//输出与化简
	if (flag) {
    
    
		if((b / gcm(a, b)==1)) cout<< (a / gcm(a, b))<<endl;
		else cout << (a / gcm(a, b)) << '/' << (b / gcm(a, b)) << endl;
	}
	
	else {
    
    
		if ((b / gcm(a, b) == 1)) cout <<'-'<< (a / gcm(a, b))<<endl;
		else cout << '-' << (a / gcm(a, b)) << '/' << (b / gcm(a, b)) << endl;
	}
}
int main()	//主函数运算的实现
{
    
    
	int T;
	int a, b, c, d;
	char op;
	Fraction f;
	cin >> T;
	while (T != 0)
	{
    
    
		bool flag = 1;
		cin >> a >> b >> c >> d >> op;
		if (op == '+')
		{
    
    
			cout << a << '/' << b << op << c << '/' << d << '=';
			f.up = a * d + b * c;
			f.down = b * d;			
			if (f.up < 0 || f.down < 0) flag = false;
			f.up = abs(f.up);
			f.down = abs(f.down);
			reduction(f.up, f.down,flag);
			
		}
		else if (op == '-')
		{
    
    
			cout << a << '/' << b << op << c << '/' << d << '=';
			f.up = a * d - b * c;
			f.down = b * d;
			if (f.up < 0 || f.down < 0) flag = false;
			f.up = abs(f.up);
			f.down = abs(f.down);
			reduction(f.up, f.down,flag);
		}
		else if (op == '*')
		{
    
    
			cout << a << '/' << b << op << c << '/' << d << '=';
			f.up = a * c;
			f.down = b * d;
			if (f.up < 0 || f.down < 0) flag = false;
			f.up = abs(f.up);
			f.down = abs(f.down);
			reduction(f.up, f.down, flag);
		}
		else if (op == '/')
		{
    
    
			cout << a << '/' << b << op << c << '/' << d << '=';

			if (f.up < 0 || f.down < 0) flag = false;
			f.up = a * d;
			f.down = b * c;
			f.up = abs(f.up);
			f.down = abs(f.down);
			reduction(f.up, f.down, flag);
		}
		T--;

	}
}

代码有待简化 demo参考

猜你喜欢

转载自blog.csdn.net/Lancelot38/article/details/123273605