第五周 任务二

谁践踏了优雅 2022-06-13 02:51 502阅读 0赞
  1. /*【任务2】C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。
  2. 任务要求:完成下面类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。*/
  3. #include<iostream>
  4. using namespace std;
  5. class CFraction
  6. {
  7. private:
  8. int nume; // 分子
  9. int deno; // 分母
  10. public:
  11. CFraction(int nu=0, int de=1) : nume(nu), deno(de){}; //构造函数,初始化用
  12. void Set(int nu=1,int de=2); //置值,改变值时用
  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. void CFraction :: input()
  22. {
  23. char c;
  24. cout << "请输入一个分数(格式 nu/de):";
  25. while(1)
  26. {
  27. cin >> nume >> c >> deno;
  28. if(c != '/')
  29. {
  30. cout << "格式错误,请重新输入:";
  31. }
  32. else
  33. break;
  34. }
  35. }
  36. void CFraction :: Set(int nu, int de)
  37. {
  38. nume = nu;
  39. deno = de;
  40. }
  41. void CFraction :: Simplify()
  42. {
  43. int i;
  44. if(deno < nume)i = deno;
  45. else i = nume;
  46. for(; i > 0; --i)
  47. {
  48. if(nume % i == 0 && deno % i == 0)
  49. {
  50. nume = nume / i;
  51. deno = deno / i;
  52. break;
  53. }
  54. }
  55. }
  56. void CFraction :: amplify(int n)
  57. {
  58. nume = nume * n;
  59. }
  60. void CFraction :: output(int style)
  61. {
  62. switch(style)
  63. {
  64. case 1: Simplify();cout << nume << "/" << deno << endl;break;
  65. case 2: cout << nume / deno << "(" << nume % deno << "/" << deno << ")" << endl;break;
  66. default: cout << nume << "/" << deno << endl;break;
  67. }
  68. }
  69. void main()
  70. {
  71. CFraction CF;
  72. CF.input();
  73. CF.output();
  74. cout << endl;
  75. CF.output(1);
  76. cout << endl;
  77. CF.output(2);
  78. cout << endl;
  79. CF.amplify(5);
  80. CF.output();
  81. cout << endl;
  82. CF.Set();
  83. CF.output();
  84. cout << endl;
  85. CF.Set(3, 8);
  86. CF.output();
  87. cout << endl;
  88. }

0_1332152450NzpB.gif

发表评论

表情:
评论列表 (有 0 条评论,502人围观)

还没有评论,来说两句吧...

相关阅读

    相关 任务

    实验目的:学会使用循环控制语句解决实际问题 实验内容:编写多分支选择结构程序,根据个人月收入总额,计算出应缴税款和税后收入。 include <iostrea

    相关 任务

    /【任务5】将任务4的解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优

    相关 任务

    /【任务3】编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类的数据成员包括长(length)、宽(width)、高(heigth)等。另外: (1)

    相关 任务

    /【任务2】C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对

    相关 任务

    /【任务1】设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化 特别要求:为全面体会构造函数的各种写法,本任务要求提交多个版本的程序,体现出你已经掌