第五周实验报告(二)

01.#include <iostream>  
02.  
03.using namespace std;  
04.class CFraction  
05.{private:  
06.    int nume;  // 分子  
07.    int deno;  // 分母  
08.    char c;  
09. public:  
10.       
11.    CFraction(int nu=0,int de=1);   //构造函数,初始化用  
12.    void Set(int nu=0,int de=1);    //置值,改变值时用  
13.    void input();               //按照"nu/de"的格式,如"5/2"的形式输入  
14.    void Simplify();            //化简(使分子分母没有公因子)  
15.    void amplify(int n);            //放大n倍,如2/3放大5倍为10/3  
16.    void output(int style=0);       //输出:以8/6为例,style为0时,输出8/6;  
17.                            //style为1时,输出4/3;  
18.                            //style为2时,输出1(1/3),表示一又三分之一;  
19.                            //不给出参数和非1、2,认为是方式0  
20.};  
21.CFraction::CFraction(int nu,int de)  
22.{  
23.    nume = nu;  
24.    deno = de ;  
25.}  
26.void CFraction::input()                        //按照"nu/de"的格式,如"5/2"的形式输入  
27.{  
28.    cout << "请输入数值: (nu/de)" << endl;  
29.    cin>>nume>>c>> deno;  
30.  
31.    while(c != '/')  
32.    {  
33.        cout << " 格式错误,请重新输入:" << endl;  
34.        cin >> nume >> c >> deno;  
35.    }  
36.}  
37.  
38.void CFraction::Simplify()                     //化简(使分子分母没有公因子)  
39.{  
40.    int i,x,m;  
41.  
42.    x = nume < deno ? nume : deno;  
43.  
44.    for(i = 2 ; i <= x ; i ++)  
45.    {  
46.        if( nume % i == 0 && deno % i == 0 )  
47.        {  
48.            nume = nume / i;  
49.            deno = deno / i;  
50.            i = 1;  
51.        }  
52.    }  
53.      
54.      
55.}  
56.  
57.void CFraction::amplify(int n)                //放大n倍,如2/3放大5倍为10/3  
58.{  
59.    nume = nume * n;  
60.  
61.    cout << nume << "/" << deno << endl;  
62.}  
63.  
64.void CFraction::output(int style)                          //输出:以8/6为例,style为0时,输出8/6;style为1时,输出4/3;style为2时,输出1(1/3),表示一又三分之一;不给出参数和非1、2,认为是方式0  
65.{  
66.    int m;  
67.  
68.    switch(style)  
69.    {  
70.    case 0: if(nume % deno == 0)  
71.               cout << nume / deno << endl;  
72.            else  
73.                cout << nume << "/" << deno << endl;   
74.            break;  
75.          
76.    case 1: Simplify();  
77.            if(nume % deno == 0)  
78.                cout << nume / deno << endl;  
79.            else  
80.                cout << nume << "/" << deno << endl;  
81.             break;  
82.    case 2:if(nume % deno == 0)  
83.               cout << nume / deno << endl;  
84.           else  
85.           {  
86.               m = nume / deno;  
87.               cout << m << "(" << nume % deno << "/" << deno << ")" << endl;  
88.               break;  
89.           }  
90.    }  
91.}  
92.int main()  
93.{  
94.    int n;  
95.  
96.    CFraction num1,num2;  
97.    num1.input();  
98.  
99.    cout << " 化简得" << endl;  
100.  
101.    num1.Simplify();  
102.  
103.    cout << " 增加2倍" << endl;  
104.  
105.    num1.amplify(2);  
106.  
107.    cout << "请选择...." << "0    1    2" << endl;  
108.  
109.    cin >> n;  
110.  
111.    num1.output(n);  
112.  
113.    system("pause");  
114.  
115.    return 0;  
116.}  
117.  
118.  
119.      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值