/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 臧鹏
* 完成日期: 2012 年 3 月 22 日
* 版 本 号:
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
//CFriction.h
#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
int gcd(int x,int y);
void output(int style=0); //输出:以8/6为例,style为0时,输出8/6;CFraction(int nu=0,int de=1); //构造函数,初始
化用
};
//CFraction.cpp
#include"CFraction.h"
CFraction::CFraction(int nu,int de)
{
nume = nu;
deno = de;
}
void CFraction::Set(int nu,int de) //置值,改变值时用
{
if(de !=0)
{
nume = nu;
deno = de;
}
else
{
cout<<"分母不能为零"<<endl;
exit(0);
}
nume = nu;
deno = de;
}
void CFraction::input() //按照"nu/de"的格式,如"5/2"的形式输入
{
char c1;
cout<<"请按照“nu/de”的格式输入一个分数:";
while(1)
{
cin>>nume>>c1>>deno;
if(c1!='/')
{
cout<<"格式不正确,请重新输入"<<endl;
}
else
{
break;
}
}
}
void CFraction::Simplify(int n) //化简(使分子分母没有公因子)
{
n = gcd(nume,deno);
nume = nume/n;
deno = deno/n;
}
int CFraction::gcd(int x,int y)
{
int r;
while( y!= 0)
{
r = x%y;
x = y;
y = r;
}
return x;
}
void CFraction::amplify(int n) //放大n倍,如2/3放大5倍为10/3
{
cout<<"请输入您想放大的倍数n:";
cin>>n;
nume*=n;
}
void CFraction::output(int style) //输出:以8/6为例,style为0时,输出8/6;CFraction(int nu=0,int de=1); //构造函数,
初始化用
{
switch(style)
{
case 0:
{
cout<<nume<<'/'<<deno<<endl;
break;
}
case 1:
{
int m = gcd(nume,deno);
cout<<(nume/m)<<'/'<<(deno/m)<<endl;
break;
}
case 2:
{
int nu,de,g;
g = gcd(nume,deno);
nu = nume/g;
de = deno/g;
cout<<(nu/de)<<"("<<(nu%de)<<'/'<<deno<<")"<<endl;
break;
}
default:
{
cout<<nume<<'/'<<deno<<endl;
}
}
}
//main.cpp
#include"CFraction.h"
int main ()
{
CFraction t1;
t1.Set(3,4); //置值,改变值时用
t1.output(1);
t1.amplify(2); //放大n倍,如2/3放大5倍为10/3
t1.output(0);
t1.input(); //按照"nu/de"的格式,如"5/2"的形式输入
t1.output(2);
t1.input(); //按照"nu/de"的格式,如"5/2"的形式输入
t1.Simplify(1); //化简(使分子分母没有公因子)
t1.output(0);
cout<<endl;
system("PAUSE");
return 0; //输出:以8/6为例,style为0时,输出8/6;CFraction(int nu=0,int de=1); //构造函数,初始化用
}
第五周任务2(分数的化简)
最新推荐文章于 2023-09-15 21:58:54 发布