补2 项目五--5

来源:互联网 发布:twitter关注推荐 知乎 编辑:程序博客网 时间:2024/05/21 22:25

一、问题及代码

#include<iostream>    
#include<Cmath>    
using namespace std;  
int gcd(int m, int n);  
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();  
    void simplify();  
    void amplify(int n);  
    void output(int style = 0);  
};  
CFraction::CFraction(int nu, int de)  
{  
    if (de != 0)  
    {  
        nume = nu;  
        deno = de;  
    }  
    else  
    {  
        cerr << "初始化中发生错误,程序退出\n";  
        system("pause");  
        exit(0);  
    }  
}  
  
void CFraction::set(int nu, int de)  
{  
    if (de != 0)  
    {  
        nume = nu;  
        deno = de;  
    }  
}  
void CFraction::input()  
{  
    int nu, de;  
    char c;  
    while (1)  
    {  
        cout << "输入分数(m/n): ";  
        cin >> nu >> c >> de;  
        if (c != '/')  
            cout << "输入格式错误!\n ";  
        else if (de == 0)  
            cout << "分母不能为零!\n ";  
        else  
            break;  
    }  
    nume = nu;  
    deno = de;  
}  
void CFraction::simplify()  
{  
    int n = gcd(deno, nume);  
    deno /= n;  
    nume /= n;  
}  
int gcd(int m, int n)  
{  
    int r;  
    if (m<n) { r = m; m = n; n = r; }  
    while (r = m%n)  
    {  
        m = n;  
        n = r;  
    }  
    return n;  
}  
void CFraction::amplify(int n)  
{  
    nume *= n;  
}  
void CFraction::output(int style)  
{  
    int n;  
    switch (style)  
    {  
    case 0:  
        cout << "原样:" << nume << '/' << deno << endl;break;  
    case 1:  
        n = gcd(deno, nume);  
        cout << "化简形式: " << nume / n << '/' << deno / n << endl;break;  
    case 2:  
        cout << "带分数形式:" << nume / deno << '(' << nume%deno << '/' << deno << ')' << endl;break;  
    case 3:  
        cout << "近似值:" << nume / double(deno) << endl;break;  
    default:  
        cout << "默认原样:" << nume << '/' << deno << endl;  
    }  
}  
int main()  
{  
    CFraction c1, c2(8, 6);  
    cout << "关于c1: " << endl;  
    c1.output(0);  
    cout << "改变c1: " << endl;  
    c1.set(2, 7);  
    c1.output();  
    cout << "输入c1: " << endl;  
    c1.input();  
    c1.output(0);  
    cout << "关于c2: " << endl;  
    c2.output(0);  
    c2.output(1);  
    c2.output(3);  
    c2.output(3);  
    c2.output();  
    cout << "将c2化简: " << endl;  
    c2.simplify();  
    c2.output(0);  
    cout << "将c2放大倍: " << endl;  
    c2.amplify(5);  
    c2.output(0);  
    c2.output(1);  
    system("pause");  
    return 0;  
}  

二、运行结果


三、心得体会

四、知识点总结

0 0
原创粉丝点击