《第三周实验报告3-1》---增加时间,以一定格式输出
2012-03-05 21:02
441 查看
开始时用的简单方法,
马同学说这样子效率低。
就又改写了、、、
////////////////////////////////////////////////////////////////////////////////////////////
开始时:
#include <iostream> using namespace std; class Time { public: void set_time( ); void show_time( ); inline void add_a_sec(); //增加1 秒钟 inline void add_a_minute(); //增加1 分钟 inline void add_an_hour(); //增加1 小时 void add_seconds(int); //增加n 秒钟 void add_minutes(int); //增加n 分钟 void add_hours(int); //增加n 小时 private: bool is_time(int, int, int); int hour; int minute; int sec; }; int main( ) { Time t1; Time &t2=t1; t1.set_time( ); t2.show_time( ); t1.add_seconds(3600); t2.show_time( ); return 0; } void Time::set_time( ) { char c1,c2; cout << "请输入时间(格式hh:mm:ss)" ; 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::show_time( ) { cout << hour << ":" << minute << ":" << sec << endl; } bool Time::is_time(int h, int m, int s) { if (h < 0 || h > 23 || m < 0 || m > 59 || s < 0 || s > 59) return false; return true; } inline void Time::add_a_sec() { ++sec; if (!is_time(hour, minute, sec)) { sec = 0; add_a_minute(); } } inline void Time::add_a_minute() { ++minute; if (!is_time(hour, minute, sec)) { minute = 0; add_an_hour(); } } inline void Time::add_an_hour() { ++hour; if (!is_time(hour, minute, sec)) { hour = 0; } } void Time::add_seconds(int s) { for (int i = 0; i < s; ++i) add_a_sec();//每循环一次增加一次 } void Time::add_minutes(int m) { for (int i = 0; i < m; ++i) add_a_minute(); } void Time::add_hours(int h) { for (int i = 0; i < h; ++i) add_an_hour(); }
改进后:
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: addtime.cpp * 作 者: 计114-3 王兴锋 * 完成日期: 2012 年 3月 5日 * 版 本 号: V 1.0 * 对任务及求解方法的描述部分 * 输入描述:要变化的量 * 问题描述:运行时输入时分秒,以加后的形式输出 * 程序输出:增加之后的时间形式 * 程序头部的注释结束 */ #include <iostream> using namespace std; class Time { public: void set_time( ); void show_time( ); inline void add_a_sec(); //增加1 秒钟 inline void add_a_minute(); //增加1 分钟 inline void add_an_hour(); //增加1 小时 void add_seconds(int); //增加n 秒钟 void add_minutes(int); //增加n 分钟 void add_hours(int); //增加n 小时 private: bool is_time(int, int, int); int hour; int minute; int sec; }; int main( ) { Time t1; Time &t2=t1; t1.set_time( ); t2.show_time( ); t1.add_seconds(3600); t2.show_time( ); return 0; } void Time::set_time( ) { char c1,c2; cout << "请输入时间(格式hh:mm:ss)" ; 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::show_time( ) { cout << hour << ":" << minute << ":" << sec << endl; } bool Time::is_time(int h, int m, int s) { if (h < 0 || h > 23 || m < 0 || m > 59 || s < 0 || s > 59) return false; return true; } inline void Time::add_a_sec() { ++sec; if (!is_time(hour, minute, sec)) { sec = 0; add_a_minute(); } } inline void Time::add_a_minute() { ++minute; if (!is_time(hour, minute, sec)) { minute = 0; add_an_hour(); } } inline void Time::add_an_hour() { ++hour; if (!is_time(hour, minute, sec)) { hour = 0; } } void Time::add_seconds(int s) { s = sec + s; sec = s % 60; add_minutes(s / 60); } void Time::add_minutes(int m) { m = minute + m; minute = m % 60; add_hours(m / 60); } void Time::add_hours(int h) { h = hour + h; hour = h % 24; }
相关文章推荐
- 第三周实验报告任务3(输入一个时间并增加时分秒)
- C++获取系统时间和格林制(GMT)时间函数,并按一定格式输出
- 第九周实验报告任务 1 定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 《C++第九周实验报告2-1》---接第8周任务2,定义Time类中的<<和>>运算符重载,实现时间的输入输出
- 《第十五周实验报告任务3.2——格式输出》
- java中如何按一定的格式输出时间, 必须给出例子
- SQL格式化输出日期 时间格式
- 如何使用php输出时间格式
- 第九周C++报告二。定义Time类中的<<和>>运算符重载,实现时间的输入输出
- 两数相加求和输出实验报告
- 第三周实验报告
- 第三周实验报告(任务1)
- Java输出特定时间段特定格式时间信息
- Java输出特定时间段特定格式时间信息
- GoLang练习实例100之009----格式输出当前时间
- 5233杨光--第三周实验报告
- 第三周实验报告(3)
- 在FreeMarker模板中输出rfc 822标准格式时间
- C#时间函数的用法C#时间格式输出
- 第十五实验报告一在《窗口程序设计及MFC 启蒙》一文案例的基础上,为应用程序增加求周长的功能