关闭

第五周任务2

141人阅读 评论(0) 收藏 举报
#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;
 }
}


 


 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:29504次
    • 积分:1077
    • 等级:
    • 排名:千里之外
    • 原创:85篇
    • 转载:0篇
    • 译文:0篇
    • 评论:16条
    最新评论