第四周上机实践项目2——分数类的雏形

来源:互联网 发布:led视频制作软件 编辑:程序博客网 时间:2024/06/13 09:51

问题及代码

/* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作    者:辛彬 * 完成日期:2015 年 3 月 29 日 * 版 本 号:v1.0 * * 问题描述:设计一个简单的分数类,完成对分数的几个运算。 * 输入描述:没有。 * 程序输出:分数。 */#include<iostream>#include<cstdlib>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 style=0);//输出:以8/6为例,style为0时,原样输出8/6;    //style为1时,输出化简后形式4/3;    //style为2时,输出1(1/3)形式,表示一又三分之一;    //style为3时,用小数形式输出,如1.3333;    //默认方式0};CFraction::CFraction(int nu,int de){    if(de!=0)    {        nume=nu;        deno=de;    }    else    {        cout<<"初始化失败!"<<endl<<endl;        exit(0);    }}void CFraction::set(int nu,int de){    if(de!=0)    {        nume=nu;        deno=de;    }}void CFraction::input(){    int nu,de;    char e;    cin>>nu>>e>>de;    if(de!=0)    {        nu=nume;        de=deno;    }}void CFraction::simplify(){    int i=nume;    if(deno<nume)        i=deno;    for(; nume%i!=0||deno%i!=0; i--);    nume=nume/i;    deno=deno/i;}void CFraction::amplify(int n){    nume=nume*n;    cout<<nume<<"/"<<deno<<endl;}void CFraction::output(int style){    if(style==0)        cout<<"原始形式为:"<<nume<<"/"<<deno<<endl;    else if(style==1)    {        simplify();        cout<<"简化形式:"<<nume<<"/"<<deno<<endl;    }    else if(style==2)        cout<<"带分数形式:"<<nume/deno<<"("<<nume-(nume/deno)<<"/"<<deno<<")"<<endl;    else if(style==3)        cout<<"小数形式:"<<double(nume)/double(deno)<<endl;}int main(){    CFraction c1(6,8),c2;    cout<<"c1的";    c1.output(0);    c1.simplify();    c1.output(1);    cout<<"将c1放大5倍,得";    c1.amplify(5);    c2.set(3,15);    cout<<"c2的";    c2.output(0);    c2.output(1);    c2.output(2);    c2.output(3);    return 0;}

运行结果:

0 0
原创粉丝点击