补2

来源:互联网 发布:wait的用法java 编辑:程序博客网 时间:2024/05/01 22:58
一、问题及代码

  1. /*  
  2. * 文件名称:Ex1-1.cpp  
  3. * 作    者:周玉杰
  4. * 完成日期:2017 年5 月 7日  
  5. * 版 本 号:v1.0  
  6. * 对任务及求解方法的描述部分: 
  7. * 输入描述:无  
  8. * 问题描述:
  9. * 程序输出:
  10. * 问题分析:略 
  11. * 算法设计:略  
  12. */#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 )
    {
    nume = nu;
    deno = de;
    cout << nu << "/" << de << endl;
    }
    int main()
    {
    cout << "原样:" << endl;
    CFraction(0, 1);
    CFraction number;
    int x, y;
    cout << "输入两个数:" << endl;
    cin >> x >> y;
    number.set(x,y);
    number.input();
    cout << "化简形式:" << endl;
    number.simplify();
    cout << "其他形式,输入1或2,3:" << endl;
    int j;
    cin >> j;
    number.output(j);
    cout << "放大n倍:" << endl;
    int n;
    cin >> n;
    number.amplify(n);
    }
    void CFraction::output(int style )
    {
    if (style == 0)
    {
    cout << nume << "/" << deno << endl;
    }
    else if(style==1)
    {
    cout << nume << "/" << deno << endl;
    }
    else if (style == 2)
    {
    cout << "带分数形式:" << endl;
    int x = nume%deno;
    nume = nume - x*deno;
    cout << x << nume << "/" << deno << endl;
    }
    else if (style = 3)
    {
    cout << (1.0*nume) / (1.0*deno) << endl;
    }
    }
    void CFraction::simplify()
    {
    int j;
    int min = (nume >= deno) ? deno : nume;
    for (int i = 1; i <= min; i++)
    {
    if (nume%i == 0 && deno%i == 0)
    {
    j = i;
    }
    }
    nume = nume / j;
    deno = deno / j;
    cout << nume << "/" << deno << endl;
    }
    void CFraction::amplify(int n)
    {
    nume = nume*n;
    cout << nume << "/" << deno << endl;
    }
    void CFraction::input()
    {
    char a;
    cout << "请以n/m的形式输入:" << endl;
    cin >> nume >> a >> deno;
    while (a != '/')
    {
    cout << "输入有误." << endl;
    cin >> nume >> a >> deno;
    }
    }
    void CFraction::set(int nu, int de)
    {
    cout << "改变:" << endl;
    cout << nu << "/" << de << endl;
二、运行结果

0 0