引用
写一个能自动将地球上主流的日期格式转换成三进制形式的C++程序
你的程序应支持如下的日期格式:
dd-mm-yy
dd-Mon-yy
dd-mm-yyyy
dd-Mon-yyyy
除此以外的日期格式可被认为格式错误而不予转换。合法的月份的三位缩写为:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov和Dec。
程序要求:
实现一个名为CternaryDate的类;
实现一个参数类型为一个string的引用的构造函数(或实现一个参数为char*的构造函数),参数为表示十进制日期的字符串;
实现一个名为IsValid()的成员方法,表明当前是否是一个正确的三进制日期对象;
实现三个名为TernaryYear()、TernaryMonth()和TernaryDay()的成员方法,返回三进制的年、月和日
实现前缀和后缀形态的++运算符,含义为计算当前日期的下一日(2月以28天计,不考虑闰年)。
输入文件:c:\1_in.txt。第一行为该文件中包含的日期的总数,然后依次每行为一个十进制日期的字符串。
输出文件:c:\1_out.txt。首行08XXXX应替换为本人的学号,第二行起每行输出一个三进制的日期,若对应该行的输入日期数据为偶数行,则使用++运算符补充输出一行该日期的下一日,格式为“The next date of 原日期 is 后一日”。若输入的十进制日期格式错误,则本行的输出为“Not Valid”;若同时错误数据也为偶数行,则忽略下一日的输出。
输入样例:C:\1_in.txt
3
20-Jun-75
03-05-70
05/01/2006
输出样例:C:\1_out.txt
Done by 08XXXX
202-20-2210
The next date of 202-20-2210 is 210-20-2210
10-12-2121
Not Valid
这个题目也太复杂了吧~~
基础知识:
1)文件输入输出 fstream
2) 字符串解析
string, find, substr
3) 面向对象的类创建,类的成员方法和成员变量
class CTernaryDate
{
public:
bool IsValid() const;
const char * TernaryYear(char *) const;
const char * TernaryMonth(char *) const;
const char * TernaryDay(char *) const;
private:
int year;
int month;
int day;
bool isValid;
};
4)带参构造函数
public:
CTernaryDate(const char * str);
5)运算符重载,++的前后置区别
CTernaryDate &operator ++();
CTernaryDate operator++(int);
6)<<运算符重载,它不是类的成员函数
std::ostream & operator<<(std::ostream & os, const CTernaryDate& date);
7)10进制转3进制
我用的是itoa中自带的三进制转换,如果不知道的话可以自己写
8)stl,find方法
我还用到stl的find方法,check是否是小月份
bool CTernaryDate::checkMonth(int month, int day)
{
if (month==0 || month>12) return false;
if (day>28 && month == 2) return false;
if( (find(&shortMonth[0], &shortMonth[5], month) != &shortMonth[5]) && day==31)
return false;
}
9)代码有点长,还要了解如何调试代码,才可能达到最后结果
分享到:
相关推荐
行政法与行政诉讼法考试题(0901_0907).pdf
中央电大开放本科计算机科学与技术专业面向对象程序设计试题_0901.pdf
0901企业人力资源管理统计统考试题1分享.pdf
0901六年级【语文(统编版)40】《草原》(第一课时)-练习题.pdf
计算机三级网络技术,从未来题库中整理出来,这个文档是第1大题,共26套题
计算机三级网络技术,从未来题库中整理出来,这个文档是第1大题的答案,共26套题
高等数学同济第七版上册+习题全解指南+课后习题答案解析
计算机三级网络技术,从未来题库中整理出来,这个文档是第4大题,共26套题
其中包括99-12年西南大学研究生复试真题,以及保研真题等。绝对正版,绝对真题。欢迎下载。
计算机三级网络技术,从未来题库中整理出来,这个文档是第2大题,共26套题
110道Python面试题汇总 内含代码展示
1000面试题,BAT机器学习面试刷题宝典
牛客面试真题附答案解析最新版-Java篇
选择题(共50分,每题2分) 1、在微机中,VGA的含义是( ) A微机型号 B 键盘型号 C 显示器标准 D 显示器型号 2、 数码相机属于外部设备中的( ) A输出设备 B 辅助存储设备 C 输入设备 D 随机存储设备 3、微机中...
只要会打字,就可快速建立自己的个性化购物网站,傻瓜式的操作,管理网站就像做选择题和填空题一样简单。全后台管理,彻底告别FTP。 无缝整合目前最为流行的“支付宝”接口,使用支付宝交易,买家、卖家都放心。 ...
软件测试是软件开发过程中的一个重要组成部分,其目的是对软件进行验证和确认,尽快尽早的发现软件产品中所存在的各种问题。主要从测试前的准备工作、测试需求收集、测试用例设计、测试用例执行、测试结果分析几个...