第五周任务(二)

来源:互联网 发布:门窗软件 编辑:程序博客网 时间:2024/06/05 02:41

 * (程序头部注释开始)

* 程序的版权和版本声明部分

* Copyright (c) 2011, 烟台大学计算机学院学生

*文件名称: 简单的分数类

* 作 者: 齐艳红

* 完成日期: 2011年3 月 20日

 版 本 号:

* 对任务及求解方法的描述部分:制造函数,初始化用

 输入描述:

* 问题描述: 对分子进行输入,放大,化简等工作

* 程序输出:

#include<iostream>#include<Cmath>using namespace std;int gcd(int x,int y );class CFraction{private:int nume;  // 分子int deno;  // 分母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/3void output(int style=0);//输出:以8/6为例,style为0时,输出8/6;//style为1时,输出4/3;//style为2时,输出1(1/3),表示一又三分之一;//不给出参数和非1、2,认为是方式0};void CFraction::set(int nu=0,int de=1){if(de!=0){nume=nu;deno=de;}}CFraction::CFraction(int nu,int de){if(de!=0){nume=nu;deno=de;}else{cout<<"分母不能置为0!"<<endl;exit(0);}}void CFraction::input(){char c;int nu,de;while(1){cout<<"输入分数(m/n)";cin>>nume>>c>>deno;if(c!='/')cout<<"格式不对!"<<endl;else if(de==0)cout<<"分母不能为0!"<<endl;else break;}nume=nu;deno=de;}void CFraction::simplify(){int n=gcd(nume,deno);nume=nume/n;deno=deno/n;}void CFraction::amplify(int n){nume*=n;}int gcd(int x,int y){int r;while(r!=0){r=x%y;x=y;y=r;}return x;}void CFraction::output(int style){switch (style){case 0:cout<<nume<<'/'<<deno<<endl;break;    case 1:int i;       i=gcd(nume,deno);   cout<<(nume/i)<<"("<<")"<<endl;   break;case 2:int de,nu;i=gcd(nume,deno);nu=nume/i;de=deno/i;case 3:cout<<nume/double(deno)<<endl;break;default:cout<<nume<<'/'<<deno<<endl;}}int main(){    CFraction c1;c1.output(0);c1.set(3,4);c1.simplify();c1.input();c1.output(0);c1.simplify();c1.output(0);return 0;}


* 程序头部的注释结束*/

原创粉丝点击