第三周 任务三

蔚落 2022-06-14 07:59 351阅读 0赞
  1. 要求:请在原类基础上,增加下列成员函数,要求前三个设计成内置函数,在main()数中增加适当的调用以展示扩充类定义后的功能(最好能一次运行)。
  2. add_a_sec() //增加1秒钟
  3. add_a_minute() //增加1分钟
  4. add_an_hour() //增加1小时
  5. add_seconds(int) //增加n秒钟
  6. add_minutes(int) //增加n分钟
  7. add_hours(int) //增加n小时
  8. 提示:要考虑增加后超出取值范围的情形
  9. #include<iostream>
  10. using namespace std;
  11. class Time
  12. {
  13. public:
  14. void set_time();
  15. void show_time();
  16. void add_a_sec()//增加一秒钟
  17. {
  18. sec = sec + 1;
  19. if(sec > 60 )
  20. {
  21. minute = minute + 1;
  22. sec=sec-60;
  23. if(minute > 60)
  24. {
  25. hour = hour +1;
  26. minute = minute - 60;
  27. if(hour > 24)
  28. {
  29. hour = hour - 24;
  30. }
  31. }
  32. }
  33. }
  34. void add_a_minute()//增加一分钟
  35. {
  36. minute = minute + 1;
  37. if(minute >= 60)
  38. {
  39. hour = hour +1;
  40. minute = minute - 60;
  41. if(hour > 24)
  42. {
  43. hour = hour - 24;
  44. }
  45. }
  46. }
  47. void add_an_hour()//增加一小时
  48. {
  49. hour = hour +1;
  50. if(hour > 24)
  51. {
  52. hour = hour - 24;
  53. }
  54. }
  55. void seconds(int);//增加n秒钟
  56. void minutes(int);//增加n分钟
  57. void hours(int);//增加n小时
  58. private:
  59. bool is_time(int, int, int);
  60. int hour;
  61. int minute;
  62. int sec;
  63. };
  64. int main()
  65. {
  66. int a, b, c;
  67. Time t1;
  68. Time &t2 = t1;
  69. t1.set_time();
  70. cout << "未增加前的时间是";
  71. t2.show_time();
  72. t1.add_a_sec();
  73. t1.add_a_minute();
  74. t1.add_an_hour();
  75. cout << "增加一秒、一分钟、一小时间后的时间是";
  76. t2.show_time();
  77. cout << "请输入要增加的秒钟:";
  78. cin >> a;
  79. cout << "请输入要增加的分钟:";
  80. cin >> b;
  81. cout << "请输入要增加的小时:";
  82. cin >> c ;
  83. t1. seconds(a);
  84. t1.minutes(b);
  85. t1.hours(c);
  86. t2.show_time();
  87. return 0;
  88. }
  89. void Time :: set_time()
  90. {
  91. char c1, c2;
  92. cout << "请输入时间(格式 hh :mm :ss)";
  93. while(1)
  94. {
  95. cin >> hour >> c1 >> minute >> c2 >> sec;
  96. if(c1 != ':' || c2 != ':')
  97. cout << "格式不正确,请重新输入" << endl;
  98. else if(!is_time(hour, minute, sec))
  99. cout << "时间非法,请重新输入" << endl;
  100. else
  101. break;
  102. }
  103. }
  104. void Time :: show_time()
  105. {
  106. cout << hour << ":" << minute << ":" << sec << endl;
  107. }
  108. bool Time :: is_time(int h, int m, int s)
  109. {
  110. if(h < 0 || h > 24 || m < 0 || m > 60 || s < 0 || s > 60)
  111. return false;
  112. return true;
  113. }
  114. void Time :: seconds(int n)//增加n秒钟
  115. {
  116. sec = sec + n;
  117. if(sec > 60)
  118. {
  119. minute = minute + sec/60;
  120. sec=sec%60;
  121. if(minute > 60)
  122. {
  123. hour = hour + minute / 60;
  124. minute = minute % 60;
  125. if(hour > 24)
  126. {
  127. hour = hour % 24;
  128. }
  129. }
  130. }
  131. }
  132. void Time :: minutes(int n)//增加n分钟
  133. {
  134. minute = minute + n;
  135. if(minute > 60)
  136. {
  137. hour = hour + minute / 60;
  138. minute = minute % 60;
  139. if(hour > 24)
  140. {
  141. hour = hour % 24;
  142. }
  143. }
  144. }
  145. void Time :: hours(int n)//增加n小时
  146. {
  147. hour = hour + n;
  148. if(hour > 24)
  149. {
  150. hour = hour % 24;
  151. }
  152. }

0_1330942749AmWw.gif

发表评论

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

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

相关阅读

    相关 任务

    要求:请在原类基础上,增加下列成员函数,要求前三个设计成内置函数,在main()数中增加适当的调用以展示扩充类定义后的功能(最好能一次运行)。 add_a_s

    相关 任务

    / 实验内容:【任务3】阅读P314的例10.1(电子版的在平台上见txt文件)。该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定是doub

    相关 任务

    /实验目的:设计平面坐标点类 实验内容:设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等 程序的版权和版本声明部分

    相关 任务

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