第五周任务2

 

 

#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;
 }
}


 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值