第六周上机实践项目1:分数类雏形

来源:互联网 发布:et软件视频教程 编辑:程序博客网 时间:2024/06/05 19:15
<pre class="cpp" name="code">/* *Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:aaa.cpp *作    者:赵子琳 *完成日期:2016年4月5日 *版 本 号:v1.0 * *问题描述:设计一个简单的分数类,完成对分数的几个运算。 */#include <iostream>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<<"初始化错误,请重新初始化!\n";}void CFraction::set(int nu,int de)//置值,改变值时用{    if(de!=0)//如果不合适,改变值操作无效    {         nume=nu;         deno=de;    }}void CFraction::input(){     int nu,de;     char k;     while(1)     {        cout<<"输入分数(m/n): ";        cin>>nu>>k>>de;        if(k!='/')            cout<<"输入格式错误!\n ";        else if(de==0)            cout<<"分母不能为零!\n ";        else            break;     }     nume=nu;     deno=de;}void CFraction::simplify()  //化简(使分子分母没有公因子){     int t,r,a,b;     a=nume;     b=deno;     if(a<b)     {         t=a;         a=b;         b=t;     }     while (b!=0)     {         r=a%b;         a=b;         b=r;     }     nume=nume/a;     deno=deno/a;     cout<<"化为最简是:"<<nume<<"/"<<deno<<endl; } void CFraction::amplify(int n) {     nume=nume*n; } void CFraction::output(int style) {     if(style==0)     {         cout<<"原样输出为:"<<nume<<"/"<<deno<<endl;     }     else if(style==1)     {         simplify();     }     else if(style==2)     {         int i,j;         simplify();         i=nume/deno;         j=nume%deno;         cout<<"化为真分数为:"<<i<<"("<<j<<"/"<<deno<<")"<<endl;     }     else if(style==3)     {         double i;         i=double(nume)/double(deno);         cout<<"该分数对应的小数形式为:"<<i<<endl;     } }int main(){    CFraction c1;    c1.input();    int n1;    cout<<"请输入c1要放大的倍数:";    cin>>n1;    c1.amplify(n1);    c1.output(0);    c1.simplify();    c1.output(2);    c1.output(3);    c1.set(8,6);    CFraction c2(4,6);    int n2;    cout<<"请输入c2要放大的倍数:";    cin>>n2;    c2.amplify(n2);    c2.output(1);    c2.output(3);    return 0;}


0 0