您的位置:首页 > 编程语言 > PHP开发

第五周上机任务2

2012-03-24 19:05 253 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:练习.cpp
* 作    者:宋本一
* 完成日期:2012 年 3 月 24 日
* 版 本 号:v5.2
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#include<iostream>
using namespace std;
class CFraction
{private:
int nume;  // 分子
int deno;// 分母
//int i;
public:
CFraction(int nu=0,int de=1):deno(de),nume(nu){};   //构造函数,初始化用
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 style=0);       //输出:以8/6为例,style为0时,输出8/6;
//style为1时,输出4/3;
//style为2时,输出1(1/3),表示一又三分之一;
//不给出参数和非1、2,认为是方式0
};

void CFraction::input()
{
char c1;
cout <<"请输入一个分数(格式nu/de):";
while(1)
{
cin >> nume >> c1 >> deno;
if ( c1 !='/' )
{
cout << "输入格式不正确,请重新输入!";
}
else
break;
}
}

void CFraction::Simplify()
{  int i;
if( deno < nume )
i = deno;
else
i = nume;
for( ; i > 0; --i)
{
if ( nume % i == 0 && deno % i == 0 )
{
nume = nume/i;
deno = deno/i;
break;
}
}
}

void CFraction::amplify(int n)
{
nume = 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:
cout<<nume/deno<< "(" << nume%deno<<"/"<<deno<<")"<<endl;break;
}

}

int main()
{
CFraction CF;
CF.input();
CF.output();
CF.amplify(2);
CF.Simplify();
CF.output();
CF.output(1);
CF.output(2);
system("PAUSE");
return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  任务 output input system c