第五周实验报告(二)
来源:互联网 发布:防辐射服有没有用 知乎 编辑:程序博客网 时间:2024/06/05 15:10
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.