/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化
* 作 者:雷恒鑫
* 完成日期:2012 年 03 月 19日
* 版 本 号: V1.3
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化
* 作 者:雷恒鑫
* 完成日期:2012 年 03 月 19日
* 版 本 号: V1.3
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#include<iostream>
using namespace std;
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(); //按照"nu/de"的格式,如"5/2"的形式输入
void Simplify(int n); //化简(使分子分母没有公因子)
void amplify(int n); //放大n倍,如2/3放大5倍为10/3
void output(int style=0); //输出:以8/6为例,style为0时,输出8/6;CFraction(int nu=0,int de=1); //构造函数,初始化用
};
int main ()
{
CFraction t1;
t1.Set(0,1); //置值,改变值时用
t1.input(); //按照"nu/de"的格式,如"5/2"的形式输入
t1.Simplify(1); //化简(使分子分母没有公因子)
t1.amplify(2); //放大n倍,如2/3放大5倍为10/3
t1.output(2);
cout<<endl;
system("PAUSE");
return 0; //输出:以8/6为例,style为0时,输出8/6;CFraction(int nu=0,int de=1); //构造函数,初始化用
}
CFraction::CFraction(int nu,int de)
{
nume = nu;
deno = de;
}
void CFraction::Set(int nu,int de) //置值,改变值时用
{
nume = nu;
deno = de;
}
void CFraction::input() //按照"nu/de"的格式,如"5/2"的形式输入
{
char h;
cout<<"请按照“nu/de”的格式输入一个分数:";
while(1)
{
cin>>nume>>h>>deno;
if(h!='/')
{
cout<<"格式不正确,请重新输入"<<endl;
}
else
{
break;
}
}
}
void CFraction::Simplify(int n) //化简(使分子分母没有公因子)
{
int a,b,min;
if(nume>deno)
{
min=deno;
}
else
{
min=nume;
}
for (int i=1;i<=min;++i)
{
b=nume%i;
a=deno%i;
if(a==0 && b==0)
{
nume=nume/i;
deno=deno/i;
if(nume>deno)
min=deno;
else
min=nume;
}
}
if(n==1)
{
cout<<"化简后的结果为:"<<nume<<'/'<<deno<<endl;
}
}
void CFraction::amplify(int n) //放大n倍,如2/3放大5倍为10/3
{
//int a,b;
cout<<"请输入您想放大的倍数n:";
cin>>n;
nume=nume*n;
//b=nume;
//a=deno;
Simplify(0);
cout<<"放大"<<n<<"倍的结果为"<<nume<<'/'<<deno<<endl;
//nume=b;
//deno=a;
}
void CFraction::output(int style) //输出:以8/6为例,style为0时,输出8/6;CFraction(int nu=0,int de=1); //构造函数,初始化用
{
int a,b;
if (style==0)
{
cout<<"您想求的值为:"<<nume<<'/'<<deno;
}
else if(style==1)
{
Simplify(0);
cout<<"您想求的值为:"<<nume<<'/'<<deno;
}
else if (style==2)
{
Simplify(0);
if(nume>deno)
{
a=nume/deno;
b=nume%deno;
}
cout<<"您想求的值为:"<<a<<'('<<b<<'/'<<deno<<')';
}
}
运行结果:
经验积累:
1.我学会了如何编写构造函数。
1.我学会了如何编写构造函数。