01./* (程序头部注释开始)
02.* 程序的版权和版本声明部分
03.* Copyright (c) 2011, 烟台大学计算机学院学生
04.* All rights reserved.
05.* 文件名称:renwu.cpp
06.* 作 者:苗向前
07.* 完成日期:2012 年 4 月 11 日
08.* 版 本 号:v8.3
09.* 对任务及求解方法的描述部分
10.* 输入描述:略
11.* 问题描述:略
12.* 程序输出:略
13.* 程序头部的注释结束
14.*/
15.#include <iostream>
16.using namespace std;
17.
18.class CFraction
19. {
20. private:
21. int nume; // 分子
22. int deno; // 分母
23. int gcd(int m, int n);
24. public:
25. //构造函数及运算符重载的函数声明
26. CFraction(int n=1, int d=1){if(d==0) return;nume=n,deno=d;}
27. friend CFraction operator +(CFraction &c1,CFraction &c2);
28. friend CFraction operator -(CFraction &c1,CFraction &c2);
29. friend CFraction operator *(CFraction &c1,CFraction &c2);
30. friend CFraction operator /(CFraction &c1,CFraction &c2);
31. friend CFraction operator -(CFraction &c);
32. bool operator >(CFraction &c);
33. bool operator <(CFraction &c);
34. bool operator >=(CFraction &c);
35. bool operator <=(CFraction &c);
36. bool operator ==(CFraction &c);
37. bool operator !=(CFraction &c);
38. void simplify();
39. void display();
40. };
41.
42.void CFraction::simplify()
43. {
44. int n=gcd(deno,nume);
45. deno/=n;
46. nume/=n;
47. }
48.
49.int CFraction::gcd(int m,int n)
50. {
51. int r;
52. if(m<n)
53. {
54. r=m;
55. m=n;
56. n=r;
57. }
58. while(r=m%n)
59. {
60. m=n;
61. n=r;
62. }
63. return n;
64. }
65.
66.void CFraction::display()
67. {
68. cout<<nume<<"/"<<deno<<endl;
69. }
70.
71.CFraction operator +(CFraction &c1,CFraction &c2)
72. {
73. CFraction c;
74. c.deno=c1.deno*c2.deno;
75. c.nume=c1.nume*c2.deno+c2.nume*c1.deno;
76. c.simplify();
77. return c;
78. }
79.
80.CFraction operator -(CFraction &c1,CFraction &c2)
81. {
82. CFraction c;
83. c.deno=c1.deno*c2.deno;
84. c.nume=c1.nume*c2.deno-c2.nume*c1.deno;
85. c.simplify();
86. return c;
87. }
88.
89.CFraction operator *(CFraction &c1,CFraction &c2)
90. {
91. CFraction c;
92. c.deno=c1.deno*c2.deno;
93. c.nume=c1.nume*c2.nume;
94. c.simplify();
95. return c;
96. }
97.
98.CFraction operator /(CFraction &c1,CFraction &c2)
99. {
100. CFraction c;
101. c.deno=c1.deno*c2.nume;
102. c.nume=c1.nume*c2.deno;
103. c.simplify();
104. return c;
105. }
106.
107.CFraction operator -(CFraction &c)
108. {
109. return CFraction(-c.nume,c.deno);
110. }
111.
112.bool CFraction::operator >(CFraction &c)
113. {
114. CFraction cf(*this/c);
115. if(cf.nume/cf.deno>1)
116. return true;
117. else
118. return false;
119. }
120.
121.bool CFraction::operator <(CFraction &c)
122. {
123. CFraction cf(*this/c);
124. if(cf.nume/cf.deno<1)
125. return true;
126. else
127. return false;
128. }
129.
130.bool CFraction::operator >=(CFraction &c)
131. {
132. CFraction cf(*this/c);
133. if(cf.nume/cf.deno>=1)
134. return true;
135. else
136. return false;
137. }
138.
139.bool CFraction::operator <=(CFraction &c)
140. {
141. CFraction cf(*this/c);
142. if(cf.nume/cf.deno<=1)
143. return true;
144. else
145. return false;
146. }
147.
148.bool CFraction::operator ==(CFraction &c)
149. {
150. CFraction cf(*this/c);
151. if(cf.nume/cf.deno==1)
152. return true;
153. else
154. return false;
155. }
156.
157.bool CFraction::operator !=(CFraction &c)
158. {
159. CFraction cf(*this/c);
160. if(cf.nume/cf.deno!=1)
161. return true;
162. else
163. return false;
164. }
165.//重载函数的实现及用于测试的main()函数
166.int main()
167. {
168. CFraction c1(1,3),c2(3,6),c3(6,10);
169. cout<<"c1=";
170. c1.display();
171. cout<<"c2=";
172. c2.display();
173. cout<<"c3=";
174. c3.display();
175. if(c1>c2)
176. cout<<"c1>c2"<<endl;
177. if(c2<c1)
178. cout<<"c2<c1"<<endl;
179. if(c2>=c3)
180. cout<<"c2>=c3"<<endl;
181. if(c2<=c3)
182. cout<<"c2<=c3"<<endl;
183. if(c2==c3)
184. cout<<"c2==c3"<<endl;
185. if(c1!=c2)
186. cout<<"c1!=c2"<<endl;
187. cout<<"c1+c2=";
188. (c1+c2).display();
189. cout<<"c1-c2=";
190. (c1-c2).display();
191. cout<<"c1*c2=";
192. (c1*c2).display();
193. cout<<"c1/c2=";
194. (c1/c2).display();
195. cout<<"c3=-c3=";
196. c3=-c3;
197. c3.display();
198. system("pause");
199. return 0;
200. }
运行结果:
第八周任务(三)
最新推荐文章于 2021-05-14 02:12:00 发布