第四周项目2 分数

来源:互联网 发布:贪婪洞窟淘宝刷钻石 编辑:程序博客网 时间:2024/05/19 18:14
/* *Copyright(c)2014,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:曾晓 *完成日期:2015年 4月 1日 *版本号: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};int main(){    CFraction c1(8,6),c2;    c1.output();    c1.output(1);    c1.output(2);    c1.output(3);    c2.input();    c2.output(1);    c1.set(3,8);    c1.amplify(4);    c1.output();    return 0;}CFraction::CFraction(int nu,int de)//初始化只在声明时用{    if(de!=0)    {        nume=nu;        deno=de;    }    else    {        cout<<"error!"<<endl;        exit(0);//退出需要用头文件#include <cstdlib>    }}void CFraction::set(int nu,int de){    if(de!=0)    {        nume=nu;        deno=de;    }    else    {        cout<<"error!"<<endl;        exit(0);//退出需要用头文件#include <cstdlib>    }    return;}void CFraction::input(){    char ch;    while(1)    {        cout<<"please input one data,as '5/2'"<<endl;        cin>>nume>>ch>>deno;        if(ch!='/')        {            cout<<"您的输入有误!"<<endl;        }        else if(deno==0)        {            cout<<"分母不能为0!"<<endl;        }        else            break;    }    return;}void CFraction::simplify(){    int x,y,r;    x=nume;    y=deno;    while(y!=0)    {        r=x%y;        x=y;        y=r;    }    nume/=x;    deno/=x;    return;}void CFraction::amplify(int n){    nume*=n;    return;}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)    {        if(nume/deno>0)            cout<<nume/deno<<"("<<nume%deno<<"/"<<deno<<")"<<endl;        else            cout<<nume<<"/"<<deno<<endl;    }    else if(style==3)    {        cout<<nume/double(deno)<<endl;//强制类型转换 将分母或分子转换成double型    }}

运行结果:


  繁忙的周末   我好累  项目一定要搞到现在来做  

 现在脑子是一堆乱码  我真的想好好休息会

0 0
原创粉丝点击