/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 李超
* 完成日期: 2012 年 3 月 22 日
* 版 本 号: 01.05.02
* 对任务及求解方法的描述部分
* 输入描述:输入分数
* 问题描述:将分数化简或将分子、分母同时扩大n倍
* 程序输出: 按要求输出分子的不同形态
* 程序头部的注释结束
*/头文件head.h:
#include<iostream>
using namespace std;
class CFraction
{private:
int nume; // 分子
int deno; // 分母
int yue; //最大公约数
public:
CFraction(int nu=0,int de=1); //构造函数,初始化用
void Set(int nu,int de); //置值,改变值时用
void input(); //按照"nu/de"的格式,如"5/2"的形式输入
void Simplify(); //化简(使分子分母没有公因子)
void amplify(int n); //放大n倍,如2/3放大5倍为10/3
void output(int style); //输出:以8/6为例,style为0时,输出8/6;
//style为1时,输出4/3;
//style为2时,输出1(1/3),表示一又三分之一;
//不给出参数和非1、2,认为是方式0
};
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 a;
int nu, de;
cout <<"按照nu/de的格式,如5/2的形式输入" <<endl;
cin >>nu >>a >>de;
nume = nu;
deno = de;
}
void CFraction::Simplify() //化简(使分子分母没有公因子)
{
int nu = nume, de = deno,temp, a;
if(nu > de)
{
temp = nu;
nu = de;
de= temp;
}
while(nu != 0)
{
a = de % nu;
de = nu;
nu = a;
}
yue = de;
deno = deno / de;
nume = nume / de;
}
void CFraction::amplify(int n) //放大n倍,如2/3放大5倍为10/3
{
deno *= n;
nume *= n;
cout <<nume <<'/' <<deno <<endl;
}
void CFraction::output(int style=0)
{
switch(style) //不给出参数和非1、2,认为是方式0
{
case 0: //输出:以8/6为例,style为0时,输出8/6;
cout <<nume * yue <<'/' <<deno * yue <<endl;
break;
case 1: //style为1时,输出4/3;
cout <<nume <<'/' <<deno <<endl;
break;
case 2:
cout <<nume / deno <<'(' <<nume % deno <<')' <<deno <<endl; //style为2时,输出1(1/3),表示一又三分之一;
break;
}
}
主函数main.cpp:
#include"head.h"
#include<iostream>
using namespace std;
void main()
{
CFraction C1(9, 6);
C1.Simplify ();
C1.output (0);
C1.output (1);
C1.output (2);
C1.amplify (4);
CFraction C2;
C2.input ();
C2.Simplify ();
C2.output (0);
C2.output (1);
C2.output (2);
C2.amplify (3);
CFraction C3;
C3.Set (8, 2);
C3.Simplify ();
C3.output (0);
C3.output (1);
C3.output (2);
C3.amplify (4);
system("PAUSE");
}
switch语句不常用,都快忘了
有不足的地方,欢迎大家批评