您的位置:首页 > 其它

第六周项目一 分数类的雏形

2016-04-02 15:18 387 查看
/*
*Copyright (c)2016,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:main.cpp
*作    者:舒文超
*完成日期:2016年4月2日
*版 本 号:v1.0
*
*问题描述:设计一个简单的分数类,完成对分数的几个运算。
*/
#include <iostream>
using namespace std;
class CFraction
{
private:
int nume;//分子
int deno;//分母
int simplify_nume;//化简后的分子
int simplify_deno;//化简后分母
public:
CFraction(int nu = 0,int de = 1)//构造函数
{
nume=nu;
deno=de;
}
void set(int nu = 0,int de = 1)//改变分子,分母
{
nume=nu;
deno=de;
}
void input();//输入
void simplify();//化简
void amplify(int n);//扩大n倍
void output(int style = 0);     //输出:以8/6为例,style = 0,原样输出8/6;
//style = 1,输出化简后的形式4/3;s
//tyle = 2,输出带分数形式1(1/3);
//style = 3,输出小数1.3333。
};
void CFraction::simplify()
{
int t,a,b;
if(nume>deno)
{
a=nume;
b=deno;
}
else
{
a=deno;
b=nume;
}
while(b!=0)
{
t=a%b;
a=b;
b=t;
}
simplify_nume=nume/a;
simplify_deno=deno/a;
}
void CFraction::output(int style)
{
double s;
int a,b;
if(style==0)
cout<<nume<<"/"<<deno<<endl;
else if(style==1)
{
CFraction::simplify();
if(simplify_deno!=1)
cout<<simplify_nume<<"/"<<simplify_deno<<endl;
else
cout<<simplify_nume<<endl;
}
else if(style==2)
{
if(nume>deno)
{
a=nume/deno;
b=nume%deno;
cout<<a<<"("<<b<<"/"<<deno<<")"<<endl;
}
else if(nume<deno)
{
cout<<"这是一个真函数"<<endl;
cout<<nume<<"/"<<deno<<endl;
}
else
cout<<"1"<<endl;
}
else
{
s=(double)nume/deno*1.0;
cout<<s<<endl;
}
}
void CFraction::amplify(int n)
{
nume=nume*n;
}
void CFraction::input()
{
cout<<"请输入分数分子分母的值"<<endl;
cin>>nume>>deno;
}
int main()
{
int n,a,b;
CFraction fen(8,6);//初始化
//fen.simplify();//化简
cout<<"请输入输出方式"<<endl<<"原样输出 0    输出化简后的形式  1    输出带分数形式  2    输出小数  3"<<endl;
cin>>n;
fen.output(n);
cout<<"请输入分数需要扩大的倍数"<<endl;
cin>>n;
fen.amplify(n);//扩大n倍
cout<<"请输入输出方式"<<endl<<"原样输出 0    输出化简后的形式  1    输出带分数形式  2    输出小数  3"<<endl;
cin>>n;
fen.output(n);
fen.set(5,2);//置值
cout<<"请输入输出方式"<<endl<<"原样输出 0    输出化简后的形式  1    输出带分数形式  2    输出小数  3"<<endl;
cin>>n;
fen.output(n);
fen.input();//输入
cout<<"请输入输出方式"<<endl<<"原样输出 0    输出化简后的形式  1    输出带分数形式  2    输出小数  3"<<endl;
cin>>n;
fen.output(n);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: