#include <iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
int gcd(int m,int n);
class CFraction
{
private:
int nume;
int deno;
public:
CFraction(int nu=0,int de=1);
void set(int nu=0,int de=1);
void input();
void simplify();
void amplify(int n);
void output(int style=0);
};
CFraction::CFraction(int nu,int de)
{
if(de!=0)
{
nume=nu;
deno=de;
}
else if(de==0)cout<<"输入错误!请重新输入!";
}
void CFraction::output(int style)
{
if(style==0)cout<<nume<<"/"<<deno;
else if(style==1)
{
int n;
n=gcd(nume,deno);
nume=nume/n;
deno=deno/n;
cout<<nume<<"/"<<deno;
}
else if(style==2)
{
if(nume>deno)cout<<nume/deno<<"("<<(nume-(nume/deno)*deno)<<"/"<<deno<<")";
else cout<<nume<<"/"<<deno;
}
else if(style==3)
{
cout<<double(nume)/double(deno);
}
}
void CFraction::set(int nu,int de)
{
nume=nu;
deno=de;
}
void CFraction::input()
{
int n,d;
char c;
cout<<"请输入数:";
cin>>n>>c>>d;
if(c!='/')cout<<"格式错误,请重新输入!";
else
{
nume=n;
deno=d;
}
}
void CFraction::simplify()
{
int n=gcd(nume,deno);
nume=nume/n;
deno=deno/n;
}
int gcd(int m, int n) //这个函数可以定义为类的成员函数,也可以为一般函数
{
int r;
if (m<n)
{
r=m;
m=n;
n=r;
}
while(r=m%n) // 求m,n的最大公约数
{
m=n;
n=r;
}
return n;
}
void CFraction::amplify(int n)
{
cout<<nume*n<<"/"<<deno*n;
}
int main()
{
CFraction C1;
C1.output();
cout<<endl;
CFraction C2;
C2.set(5,2);
C2.output(2);
cout<<endl;
CFraction C3;
C3.input();
C3.amplify(3);
cout<<endl;
C3.simplify();
C3.output(0);
cout<<endl;
C3.output(1);
cout<<endl;
C3.output(2);
cout<<endl;
C3.output(3);
return 0;
}
2015年第四周项目二:分数类的雏形
最新推荐文章于 2015-04-01 21:54:22 发布