#include <iostream>
#include<math.h>
using namespace std;
class CFraction
{
public:
CFraction(int nu=0,int de=1):nume(nu),deno(de){}
void set(int nu,int de);
void input();
void simplify();
int amplify(int n); //最好是没有括号 的部分
void output(int style=2);
int g(int,int);
void showmessage();
private:
int nume;
int deno;
};
int main()
{
CFraction t1(18,12);
t1.output(2);
//cout<<t1.amplify(int n=2)<<endl;
t1.set(3,4);
t1.simplify();
t1.input();
//CFraction t2(12,18);
//t2.set(int su,int de);
//t2.showmessage();
return 0;
}
//置值,改变值时用
void CFraction::set(int nu,int de)//nu,de不能被赋值
{
if(de!=0)
{
nume=nu;
deno=de;
}
else
{
cout<<"分母不能为0"<<endl;
exit(0);
}
}
//按照“nu/de"的格式输入
void CFraction::input()
{
char c;
//int nu,de;
while (1)
{
cin>>nume>>c>>deno;
if(c!='/')
cout<<"格式不对"<<endl;
else if (deno==0)
{
cout<<"分母不能为0"<<endl;
}
else
break;
}
//nume=nu;
//deno=de;
}
int CFraction::amplify(int n=2)
{
//cin>>n;
nume*=n;
return nume;
}
//求最大公约数
int CFraction::g(int x,int y)//不在类中定义?
{
int r;
while(y!=0)
{
r=x%y;
x=y;
y=r;
}
return x;
}
//化简
void CFraction::simplify()
{
int n=g(nume,deno);
nume=nume/n;
deno=deno/n;
}
//输出数
void CFraction::output(int style)
{
switch(style)
{
case 0:cout<<nume<<'/'<<deno<<endl;break;
case 1:int i;i=g(nume,deno);cout<<(nume/i)<<'/'<<(deno/i)<<endl;break;
case 2:int nu,de;i=g(nume,deno);nu=nume/i;de=deno/i;cout<<(nume/deno)<<'('<<(nume%deno)<<'/'<<deno<<')'<<endl;break;
default:cout<<nume<<'/'<<deno<<endl;break;
}
}
#include <iostream>
#include<math.h>
using namespace std;
class CFraction
{
public:
CFraction(int nu=0,int de=1):nume(nu),deno(de){}
void set(int nu,int de);
void input();
void simplify();
int amplify(int n);
void output(int style=2);
int g(int,int);
void showmessage();
private:
int nume;
int deno;
};
int main()
{
CFraction t1(18,12);
t1.output(2);
//cout<<t1.amplify(int n=2)<<endl;
t1.set(3,4);
t1.simplify();
t1.input();
//CFraction t2(12,18);
//t2.set(int su,int de);
//t2.showmessage();
return 0;
}
//置值,改变值时用
void CFraction::set(int nu,int de)//nu,de不能被赋值
{
if(de!=0)
{
nume=nu;
deno=de;
}
else
{
cout<<"分母不能为0"<<endl;
exit(0);
}
}
//按照“nu/de"的格式输入
void CFraction::input()
{
char c;
//int nu,de;
while (1)
{
cin>>nume>>c>>deno;
if(c!='/')
cout<<"格式不对"<<endl;
else if (deno==0)
{
cout<<"分母不能为0"<<endl;
}
else
break;
}
//nume=nu;
//deno=de;
}
int CFraction::amplify(int n=2)
{
//cin>>n;
nume*=n;
return nume;
}
//求最大公约数
int CFraction::g(int x,int y)//不在类中定义?
{
int r;
while(y!=0)
{
r=x%y;
x=y;
y=r;
}
return x;
}
//化简
void CFraction::simplify()
{
int n=g(nume,deno);
nume=nume/n;
deno=deno/n;
}
//输出数
void CFraction::output(int style)
{
switch(style)
{
case 0:cout<<nume<<'/'<<deno<<endl;break;
case 1:int i;i=g(nume,deno);cout<<(nume/i)<<'/'<<(deno/i)<<endl;break;
case 2:int nu,de;i=g(nume,deno);nu=nume/i;de=deno/i;cout<<(nume/deno)<<'('<<(nume%deno)<<'/'<<deno<<')'<<endl;break;
default:cout<<nume<<'/'<<deno<<endl;break;
}
}