/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:分数类
* 作 者:韩冰
* 完成日期: 2012 年 x 月 x 日
* 版 本 号:
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#include <iostream>
#include <cmath>
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(); //化简(使分子分母没有公因子)
void amplify(int n); //放大n倍,如2/3放大5倍为10/3
void output(int = 0); //输出:以8/6为例,style为0时,输出8/6;
//style为1时,输出4/3;
//style为2时,输出1(1/3),表示一又三分之一;
//不给出参数和非1、2,认为是方式0
};
int main (void)
{
CFraction BBQ;
BBQ.set (4, 2);
BBQ.output();
BBQ.input();
BBQ.simplify();
BBQ.output();
BBQ.amplify (250);
BBQ.output(1);
BBQ.output(2);
BBQ.output(250);
system ("pause");
return 0;
}
void CFraction::set(int nu, int de)
{
nume = nu;
deno = de;
}
void CFraction::input()
{
int a, b;
char c;
while (250)
{
cin >> a >> c >> b;
if (a > 0 && c == '/' && b > 0)
{
break;
}
else
{
cout << "输入有问题,请重新输入。" <<endl;
}
}
nume = a;
deno = b;
}
void CFraction::simplify()
{
if (nume > deno)
{
int temp, i = deno, p = nume;
while (i)
{
temp = i;
i = p % i;
p = temp;
}
nume /= p;
deno /= p;
}
}
void CFraction::amplify (int n)
{
nume *= n;
}
void CFraction::output(int style)
{
switch (style)
{
case 0:
cout << nume << '/' << deno << endl;
break;
case 1:
simplify();
cout << nume << '/' << deno << endl;
break;
case 2:
simplify();
cout << nume / deno << '(' << nume % deno << ')' << deno << endl;
break;
default:
cout << "错误!" << endl;
}
}
第五周实验报告 任务二
最新推荐文章于 2022-02-25 19:38:17 发布