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.