//main.cpp
#include<iostream>
#include"Rational.h"
using namespace std;
void main()
{
Rational calculate;
calculate.Set();
calculate.Judge();
return;
}
//Rational.h
class Rational
{
public:
void Set();
void Cheng(int &fz3, int &fm3);
void Chu(int &fz3, int &fm3);
void Jia(int &fz3, int &fm3);
void Huajian(int &fz3, int&fm3);
void Jian(int &fz3, int &fm3);
void Judge();
private:
int fz1;
int fm1;
int fz2;
int fm2;
int fz3;
int fm3;
char sign;
};
</pre><pre name="code" class="cpp">//Rational.cpp
#include<iostream>
#include<string>
#include"Rational.h"
using namespace std;
void Rational::Set()/*输入函数*/
{
bool flag = 0;
string fenshu1,fenshu2;
cout << "please enter fenshu1" << endl;
cin >> fenshu1;
fz1 = fm1 = fz2 = fm2 = 0;
for (unsigned int i = 0; i < fenshu1.length(); i++)
{
if (!flag)
{
if (fenshu1[i] == '/')flag = 1;
else
fz1 = fz1 * 10 + fenshu1[i] - '0';
}
else
fm1 = fm1 * 10 + fenshu1[i] - '0';
}
cout << "please enter operate" << endl;
cin >> sign;
cout << "please enter fenshu2" << endl;
cin >> fenshu2;
flag = 0;
for (unsigned int i = 0; i < fenshu2.length(); i++)
{
if (!flag)
{
if (fenshu2[i] == '/')flag = 1;
else
fz2 = fz2 * 10 + fenshu2[i] - '0';
}
else
fm2 = fm2 * 10 + fenshu2[i] - '0';
}
return;
}
//************************************************************************************************
void Rational::Cheng(int &fz3, int &fm3)/*乘法函数*/
{
fz3 = fz1*fz2;
fm3 = fm1*fm2;
Rational::Huajian(fz3, fm3);
return;
}
//************************************************************************************************
void Rational::Chu(int & fz3, int & fm3)/*除法函数*/
{
int temp;
temp = fz2;
fz2 = fz1;
fz1 = temp;
Rational::Cheng(fz3, fm3);
return;
}
//************************************************************************************************
void Rational::Jia(int & fz3, int & fm3)/*加法函数*/
{
fz1 = fz1*fm2;
fz2 = fm1*fz2;
fm3 = fm1*fm2;
fz3 = fz1 + fz2;
Rational::Huajian(fz3, fm3);
return;
}
//************************************************************************************************
void Rational::Jian(int & fz3, int & fm3)/*减法函数*/
{
fz1 = fz1*fm2;
fz2 = fm1*fz2;
fm3 = fm1*fm2;
fz3 = fz1 - fz2;
Rational::Huajian(fz3, fm3);
return;
}
//************************************************************************************************
void Rational::Huajian(int & fz3, int & fm3)/*化简函数*/
{
for (int i = 2; i <= fm3; i++)
{
if (fz3%i == 0 && fm3%i == 0)
{
fz3 /= i;
fm3 /= i;
i = 1;
}
}
cout << fz3 << '/' << fm3 << endl;
return;
}
//************************************************************************************************
void Rational::Judge()/*判断计算符号*/
{
switch (sign)
{
case '+':
Rational::Jia(fz3, fm3); break;
case'-':
Rational::Jian(fz3, fm3); break;
case'*':
Rational::Cheng(fz3, fm3); break;
case'/':
Rational::Chu(fz3, fm3); break;
default:
cout << "error" << endl;
break;
}
}
分数输入格式x/y;