【2017年整理】实验12报告

上传人:爱****1 文档编号:945154 上传时间:2017-05-23 格式:DOC 页数:18 大小:181KB
返回 下载 相关 举报
【2017年整理】实验12报告_第1页
第1页 / 共18页
【2017年整理】实验12报告_第2页
第2页 / 共18页
【2017年整理】实验12报告_第3页
第3页 / 共18页
【2017年整理】实验12报告_第4页
第4页 / 共18页
【2017年整理】实验12报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《【2017年整理】实验12报告》由会员分享,可在线阅读,更多相关《【2017年整理】实验12报告(18页珍藏版)》请在金锄头文库上搜索。

1、高等程序设计实验报告实验名称 实验 12 运算符重载(2) 系 别姓 名 学 号 班 级实验时间 实验地点 实验成绩一、 实验目的及要求进一步理解运算符重载,运用成员函数和友元函数等方法实现运算符的重载。二、 实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)硬件设备:联网的个人计算机操作系统:Windows xp编译系统:Dev C+三、 实验内容及步骤(包含简要的实验步骤流程)1、重载函数调用运算符(),将以下的二维数组的下标表示方法:chessBoardrowcolumn改为常用的表示方法:chessBoard(row,column)2、重载下标运算符使之返回集合中最大的元素

2、、次最大的元素以及第三大的元素。3、开发多项式类 Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。例如:2x 4的指数为 4,系数为 2。请开发一个完整的 Polynomial 类,包括构造函数、析构函数以及get函数和set函数。该类还要提供下述重载的运算符(分别使用成员函数和友元函数):1)重载加法运算符+,将两个多项式相加;2)重载减法运算符-,将两个多项式相减;3)重载赋值运算符=,将一个多项式赋给另外一个多项式;4)重载乘法算符*,将两个多项式相乘;5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*= 。4设计一个日期类 Date,,要求:

3、(1)包含年(year) 、月(month) 和日(day)私有数据成员。(2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-、重载输出运算符等。提示:由于各 C+编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:void SetYear(int y); / 设置年 int SetMonth(int m); / 设置月 int SetDay(int d); / 设置日int GetYear() const; / 返回年 int GetMonth

4、() const; / 返回月 int GetDay() const; / 返回日static int IsLeapyear(int y); / 判断年份 y 是否为润年static int GetDays(int y); / 年份 y 的天数static int GetDays(const Date &d); / 日期 d 当前月份的天数static int DateToNum(const Date &d); / 返回从公元 1 年 1 月 1 日起的天数static Date NumToDate(int n); /由从公元 1 年 1 月 1 日起的天数返回日期润年条件:年份能被 4 整除

5、,并且年份不能被 100 整除,或者年份能被 400 整除润年天数:366平年天数:365润年 2 月份天数:29平年 2 月份天数:285设计一个时间类 Time,要求:(1)包含时(hour)、分(minute) 和秒(second) 私有数据成员。(2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间的减加运算符-、重载输出运算符 等。提示:可仿照第 4 题编程实现,可将时间转换成秒数,将秒数转成时间进行辅助编程。时间转换成秒数:秒数 = 时 * 3600 + 分 * 60 + 秒秒数转换成时间:时 = 秒数 / 3600分 = (秒数 - 时 * 36

6、00) / 60秒 = 秒数 % 60为编程更方便,可增加一些成员函数,比如:void SetHour(int hh); / 设置小时 void SetMinute(int mm); / 设置分钟 void SetSecond(int ss); / 设置秒 int GetHour() const; / 返回小时 int GetMinute() const; / 返回分钟 int GetSecond() const; / 返回秒4、实验结果(包括程序或图表、结论陈述、数据记录及分析等,可附页)1、重载函数调用运算符(),将以下的二维数组的下标表示方法:chessBoardrowcolumn改为常

7、用的表示方法:chessBoard(row,column)代码实现:#include#include using namespace std;class shuzuint chessBoard88;public:shuzu()for (int i=0;i#includeusing namespace std;class Jprivate:int a5;public:J(int s)for(int i=0;iaj+1)int temp=aj;aj=aj+1;aj+1=temp;int operator(int b)return ab;int main()int s5;coutsi;J j(s);

8、j.paixu();cout等。提示:由于各 C+编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:void SetYear(int y); / 设置年 int SetMonth(int m); / 设置月 int SetDay(int d); / 设置日int GetYear() const; / 返回年 int GetMonth() const; / 返回月 int GetDay() const; / 返回日static int IsLeapyear(int y); / 判断年份

9、y 是否为润年static int GetDays(int y); / 年份 y 的天数static int GetDays(const Date &d); / 日期 d 当前月份的天数static int DateToNum(const Date &d); / 返回从公元 1 年 1 月 1 日起的天数static Date NumToDate(int n); /由从公元 1 年 1 月 1 日起的天数返回日期润年条件:年份能被 4 整除,并且年份不能被 100 整除,或者年份能被 400 整除润年天数:366平年天数:365润年 2 月份天数:29平年 2 月份天数:28(1)程序实现#i

10、ncludeiostream.h#includeclass Datepublic:Date(int a=0,int b=0,int c=0);void Set_Date(int a,int b,int c);void Get_Date();Date operator+(int);Date operator-(int);friend ostream& operator(istream&, Date&);private:int year,mounth,date,m;Date:Date(int a,int b,int c)year=a;mounth=b;date=c;m=1;void Date:Se

11、t_Date(int a,int b,int c)year=a;mounth=b;date=c;void Date:Get_Date()if(m=1)cout28)m=0;return *this;elseif(year%400=0)|(year%4=0)&(year%100!=0)if(mounth=4)|(mounth=6)|(mounth=9)|(mounth=11)if(date+a)28)m=0;return *this;elseif(year%400=0)|(year%4=0)&(year%100!=0)if(mounth=5)|(mounth=7)|(mounth=10)|(mo

12、unth=12)if(date=a)date=date-a;elsedate=date-a+30;mounth-;elseif(mounth=3)if(date=a)date=date-a;elsedate=date-a+29;mounth-;elseif(date=a)date=date-a;elsedate=date-a+31;if(mounth=1)year-;mounth=12;elsemounth-;elseif(mounth=5)|(mounth=7)|(mounth=10)|(mounth=12)if(date=a)date=date-a;elsedate=date-a+30;m

13、ounth-;elseif(mounth=3)if(date=a)date=date-a;elsedate=date-a+28;mounth-;elseif(date=a)date=date-a;elsedate=date-a+31;if(mounth=1)year-;mounth=12;elsemounth-;return *this;ostream& operator(istream& input,Date &a)couta.year;couta.mounth;couta.date;return input;int main() Date a,b,c;int x,y,z;coutx;cou

14、ty;coutz;a.Set_Date(x,y,z);c=a;coutb;coutz;a=a+z;coutz;cout 等。提示:可仿照第 4 题编程实现,可将时间转换成秒数,将秒数转成时间进行辅助编程。时间转换成秒数:秒数 = 时 * 3600 + 分 * 60 + 秒秒数转换成时间:时 = 秒数 / 3600分 = (秒数 - 时 * 3600) / 60秒 = 秒数 % 60为编程更方便,可增加一些成员函数,比如:void SetHour(int hh); / 设置小时 void SetMinute(int mm); / 设置分钟 void SetSecond(int ss); / 设置

15、秒 int GetHour() const; / 返回小时 int GetMinute() const; / 返回分钟 int GetSecond() const; / 返回秒代码实现:#include#includeusing namespace std;class Timeint hour,minute,second,sall;public:Time();Time operator+(Time a);Time operator-(Time a);Time operator(Time &a);void SetHour(int hh); / 设置小时 void SetMinute(int mm); / 设置分钟 void SetSecond(int ss); / 设置秒 int GetHour() const; / 返回小时 int GetMinute() const; / 返回分钟 int GetSecond() const; / 返回秒int GetSall() const;Time:Time()second=0;hour=0;minute=0;sall=0;T

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号