第一周 基于对象的程序设计——时间类(增加n)
2015-03-16 15:55
190 查看
问题及代码:
(2)再增加三个成员函数,要求在类内声明,类外定义。
add_seconds(int) //增加n秒钟
add_minutes(int) //增加n分钟
add_hours(int) //增加n小时
提示:
要考虑增加后超出取值范围的情形;
增加n秒后,秒数可能会超过60,调整秒数,并可以调用增加分钟数的成员函数,使时间合法;同理,增加分钟数也有类似问题。
运行结果:
心得体会:
开始有一点很坑的是我刚好犯了贺老师在程序解答中提到的问题也就是
add_minutes(sec/60); //增加sec/60分钟
sec%=60;
这两个条件调换了,结果分数和小时数就增加不上了,所以我又引入一个变量来中和,但是后来看贺老师的发现我弄复杂了
(2)再增加三个成员函数,要求在类内声明,类外定义。
add_seconds(int) //增加n秒钟
add_minutes(int) //增加n分钟
add_hours(int) //增加n小时
提示:
要考虑增加后超出取值范围的情形;
增加n秒后,秒数可能会超过60,调整秒数,并可以调用增加分钟数的成员函数,使时间合法;同理,增加分钟数也有类似问题。
#include <iostream> using namespace std; class Time { public: void set_time( ); void show_time( ); void add_n_sec(int n); void add_n_minute(int n); void add_n_hour(int n); private: bool is_time(int, int, int); //这个成员函数设置为私有的,是合适的,请品味 int hour; int minute; int sec; }; void Time::set_time( ) { char c1,c2; cout<<"请输入时间(格式hh:mm:ss):"<<endl; while(1) { cin>>hour>>c1>>minute>>c2>>sec; if(c1!=':'||c2!=':') cout<<"格式不正确,请重新输入"<<endl; else if (!is_time(hour,minute,sec)) cout<<"时间非法,请重新输入"<<endl; else break; } } void Time::add_n_sec(int n) { sec+=n; if(sec>59) { int m; m=sec; sec=sec%60; add_n_minute(m/60); } } void Time::add_n_minute(int n) { minute+=n; if(minute>59) { int m; m=minute; minute=minute%60; add_n_hour(m/60); } } void Time::add_n_hour(int n) { hour+=n; if(hour>23) { hour=hour%24; } } void Time::show_time( ) { cout<<hour<<":"<<minute<<":"<<sec<<endl; } bool Time::is_time(int h,int m, int s) { if (h<0 ||h>24 || m<0 ||m>60 || s<0 ||s>60) return false; return true; } int main( ) { Time t1; Time &t2=t1; int l,n,m; t1.set_time( ); cout<<"现在时间是:"<<endl; t2.show_time( ); cout<<"请输入要增加的秒数:"<<endl; cin>>n; t1.add_n_sec(n); cout<<"增加"<<n<<"秒后的时间是:"<<endl; t1.show_time(); cout<<"请输入要增加的分钟数:"<<endl; cin>>l; t1.add_n_minute(l); cout<<"增加"<<l<<"分钟后的时间是:"<<endl; t1.show_time(); cout<<"请输入要增加的小时数:"<<endl; cin>>m; t1.add_n_hour(m); cout<<"增加"<<m<<"小时后的时间是:"<<endl; t1.show_time(); return 0; }
运行结果:
心得体会:
开始有一点很坑的是我刚好犯了贺老师在程序解答中提到的问题也就是
add_minutes(sec/60); //增加sec/60分钟
sec%=60;
这两个条件调换了,结果分数和小时数就增加不上了,所以我又引入一个变量来中和,但是后来看贺老师的发现我弄复杂了
相关文章推荐
- 都一周基于对象的程序设计——时间类(增加1)
- 基于对象的程序设计 第一周项目一 求旱冰场的造价
- 第一周 基于对象的程序设计——图书管理
- 第一周基于对象的程序设计——长方体类
- 第三周——基于对象的程序设计——三角形类(2)
- 第三周——基于对象的程序设计——三角形类(3)多文件组织
- 第一周 项目三时间类(增加n秒)
- 程序设计方法(一):结构化、基于对象、面向对象、基于接口
- 第四周——基于对象的程序设计——项目一(1)三角形类
- 第三周——基于对象的程序设计——三角形类(1)
- c++之基于对象程序设计
- 第四周——基于对象的程序设计——项目一(3)三角形类
- 基于ECMA 的JavaScript 的面向对象程序设计
- 第三周——基于对象的程序设计——工资类(4)多文件组织
- 第一周项目三 时间类(1)增加一秒
- 第三周——基于对象的程序设计——成绩类多文件组织
- 《C++程序设计》笔记之-基于对象程序设计
- 第一周项目三.1---时间增加一秒、分、时
- 基于对象的程序设计
- 第三周——基于对象的程序设计——工资类(2)动态数组