首页 > 代码库 > Boolan Homework——Date类
Boolan Homework——Date类
问题描述
为Date类实现如下成员:
1. 构造器,可以初始化年、月、日。
2. 大于、小于、等于(> 、< 、==)操作符重载,进行日期比较。
3. print() 打印出类似 2015-10-1 这样的格式。
然后创建两个全局函数:
1. 第1个函数 CreatePoints生成10个随机的Date,并以数组形式返回
2. 第2个函数 Sort 对第1个函数CreatePoints生成的结果,将其按照从小到大进行排序。
最后在main函数中调用CreatePoints,并调用print将结果打印出来。然后调用Sort函数对前面结果处理后,并再次调用print将结果打印出来。
代码实现
date.h头文件
#ifndef _DATE_#define _DATE_#include <iostream>using namespace std;class Date;void Sort(Date* date, const int& n); void CreatePoints(Date* date, const int& n);ostream& operator << (ostream& obj,const Date& date); class Date{ public: Date (int y = 0, int m = 0, int d = 0) : year(y), month(m), day(d) {} bool operator == (const Date& date) { return year == date.year && month == date.month && day == date.day; } bool operator > (const Date& date) { if (year != date.year) return year > date.year; else if (month != date.month) return month > date.month; else if (day != date.day) return day > date.day; else return false; } bool operator < (const Date& date) { if (year != date.year) return year < date.year; else if (month != date.month) return month < date.month; else if (day != date.day) return day < date.day; else return false; } void Print() { cout << year << ‘-‘ << month << ‘-‘ << day << endl; } private: int year; int month; int day; friend void CreatePoints(Date* date, const int& n); friend ostream& operator << (ostream& obj,const Date& date); /*作业没要求,自己重载<<运算符 */ };#endif
date.cpp实现文件
#include "date.h"#include <iostream>#include <cstdlib>#include <ctime>using namespace std;ostream& operator << (ostream& obj,const Date& date){ return obj << date.year << ‘-‘ << date.month << ‘-‘ << date.day;}void CreatePoints(Date* date, const int& n){ srand(time(NULL)); /*初始化种子*/ /*没有考虑具体日期,如闰年、不同月份有不同天数等*/ for (int i=0; i<n; ++i) { date[i].year = rand() % 2015 + 1; date[i].month = rand() % 12 + 1; date[i].day = rand() % 30 + 1; }}/*冒泡排序*/void Sort(Date* date, const int& n){ Date temp; for (int i=0; i<n; ++i) { for (int j=0; j<n-i-1; ++j) { if (date[j] > date[j+1]) { temp = date[j]; date[j] = date[j+1]; date[j+1] = temp; } } }}
main.cpp主程序
#include <iostream>#include "date.h"#define NUM 10 using namespace std;int main(int argc, char** argv) { Date *date = new Date[NUM]; CreatePoints(date,NUM); cout << "before sort:" << endl; for (int i = 0; i < NUM; i++ ) { date[i].Print(); /*或cout << date[i] << endl;*/ } Sort(date,NUM); cout << "after sort:" << endl; for (int i = 0; i < NUM; i++ ) { date[i].Print(); /*或cout << date[i] << endl;*/ } delete[] date; return 0;}
Boolan Homework——Date类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。