高等程序设计实验报告推荐_第1页
高等程序设计实验报告推荐_第2页
高等程序设计实验报告推荐_第3页
高等程序设计实验报告推荐_第4页
高等程序设计实验报告推荐_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、con st; int GetMo nth() con st; int GetDay() con st; static int lsLeapyear(int y); static int GetDays(i nt y); static int GetDays(const Date / static int DateToNum(co nst Date static Date NumToDate(int n); /设置日 /返回年 /返回月 /返回日 /判断年份y是否为润年 /年份y的天数 日期d当前月份的天数 /返回从公元1年1月1日起的天数 /由从公元1年1月1日起的天数返回日期 润年条件:年

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

6、/ 60 秒=秒数% 60 为编程更方便,可增加一些成员函数,比如: void SetHour(int hh); /设置小时 void SetM inu te(i nt mm); / 设置分钟 void SetSec on d(i nt ss); / 设置秒 int GetHour() con st; / 返回小时 int GetMi nute() con st; /返回分钟 int GetSec on d() con st; /返回秒 四、实验结果(包括程序或图表、结论陈述、数据记录及分析等,可附页) 1、重载函数调用运算符(),将以下的二维数组的下标表示方法: chessBoardrowc

7、olum n 改为常用的表示方法: chessBoard(row,colu mn) 代码实现: #in clude #in clude using n amespace std; class shuzu int chessBoard88; public: shuzu() for (int i=0;i8;i+) for(i nt j=0;j8;j+) chessBoardij=i+j; int operator()(i nt a,i nt b)return chessBoardab; ; int mai n() shuzu a; cout输出(6,7)=a(6,7)vvendl; cout矩阵:

8、endl; for(int i=0;i8;i+) for(i nt j=0;j8;j+) coutva(i,j)vvt; coute ndl; getch(); return 0; 结果截图: 2、重载下标运算符使之返回集合中最大的元素、次最大的元素以及第三大的元素 3、开发多项式类 Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指 数。例如:2x4的指数为4,系数为2。 请开发一个完整的Polynomial类,包括构造函数、析构函数以及get函数和set函数 该类还要提供下述重载的运算符(分别使用成员函数和友元函数): 1)重载加法运算符+,将两个多项式相加; 2)重

9、载减法运算符-,将两个多项式相减; 3)重载赋值运算符二,将一个多项式赋给另外一个多项式; 4)重载乘法算符*,将两个多项式相乘; 5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*=。 代码实现: #in clude #in clude using n amespace std; class J private: int a; public: J(int s) for(i nt i=0;i5;i+) ai=si; void paixu() for(int i=0;i4;i+) for(i nt j=0;jaj+1) int temp=aj; aj=aj+1; aj+1=tem

10、p; int operator(i nt b) return ab; ; int mai n() int s5; cout请输入 5 个数:endl; for(i nt i=0;i si; J j(s); j.paixu(); coutvv最大的元素、次最大的元素以及第三大的元素依次为: vvj4vv,vvj3vv,vvj2vve ndl; getch(); return 0; 结果截图: 4 设计一个日期类Date,,要求: (1) 包含年(year)、月(month)和日(day)私有数据成员。 (2) 包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数 的减加运算

11、符-、重载输出运算符 等。 提示:由于各C+编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重 载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加 一些成员函数,比如: void SetYear(i nt y); int SetMonth(int m); int SetDay(i nt d); int GetYear() con st; int GetMo nth() con st; int GetDay() con st; static int lsLeapyear(int y); static int GetDays(i nt y); static

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

13、e class Date public: Date(int a=0,int b=0,int c=0); void Set_Date(i nt a,i nt b,i nt c); void Get_Date(); Date operator+(i nt); Date operator- nt); friend ostream friend istream private: int year,m oun th,date,m; ; Date:Date(i nt a,i nt b,i nt c) year=a; moun th=b; date=c; m=1; void Date:Set_Date(i

14、nt a,i nt b,i nt c) year=a; moun th=b; date=c; void Date:Get_Date() if(m=1) coutvvyearvv年mounth月date日endl; else coutvv刚才输入的天数不符合要求!28) m=0; return *this; else if(year%400=0)|(year%4=0) else date=date+a-30; moun th+; else if(moun th=2) if(date+a)=29) date=date+a; else date=date+a; moun th+; /处理2月 els

15、e if(date+a)=31) date=date+a; else date=date+a-31; if(mou nth=12) year+; moun th=1; else moun th+; else if(moun th=4)|(m oun th=6)|(m oun th=9)|(m oun th=11) if(date+a)=30) date=date+a; else date=date+a-30; moun th+; else if(moun th=2) if(date+a)=28) date=date+a; else date=date+a-28; moun th+; else

16、if(date+a)28) m=0; return *this; else if(year%400=0)|(year%4=0) else date=date-a+30; mou nth-; else if(moun th=3) if(date=a) date=date-a; else date=date-a+29; mou nth-; else if(date=a) date=date-a; else date=date-a+31; if(moun th=1) year-; moun th=12; else mou nth-; else if(mou nth=5)|(mou nth=7)|(m

17、ou nth=10)|(mou nth=12) if(date=a) date=date-a; else date=date-a+30; mou nth-; else if(moun th=3) if(date=a) date=date-a; else date=date-a+28; mou nth-; else if(date=a) date=date-a; else date=date-a+31; if(moun th=1) year-; moun th=12; else mou nth-; return *this; ostream cout月:; cin a.m oun th; cou

18、t日:; cin a.date; return in put; int mai n() Date a,b,c; int x,y,z; : x; cout月:; ciny; cout日:; cin z; a.Set_Date(x,y,z); c=a; coutvv请输入第二个日期:vvendl; cin b; coutvv请输入需要加上的天数: z; a=a+z; coutvv日期vcv加上zvv天得到的日期为: z; coutvv日期vvbvv减去vvzvv天vv得到的日期为:vvendl; b=b-z; b. Get_Date(); getch(); return 0; (2)结果截图 5.

19、设计一个时间类Time,要求: (1) 包含时(hour)、分(minute)和秒(second)私有数据成员。 (2) 包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去 另一时间的减加运算符-、重载输出运算符 等。 提示:可仿照第4题编程实现,可将时间转换成秒数,将秒数转成时间进行辅助编程。 时间转换成秒数: 秒数=时* 3600 + 分* 60 + 秒 秒数转换成时间: 时=秒数/ 3600 分=(秒数-时* 3600) / 60 秒=秒数% 60 为编程更方便,可增加一些成员函数,比如: void SetHour(int hh); /设置小时 void SetM

20、 inu te(i nt mm); / 设置分钟 void SetSec on d(i nt ss); / 设置秒 int GetHour() con st; / 返回小时 int GetMi nu te() con st; /返回分钟 int GetSec on d() con st; /返回秒 代码实现: #in clude #in clude using n amespace std; class Time int hour,m inu te,sec on d,sall; public: Time operator+(Time a); Time operator-(Time a); Ti

21、me operator(Time Time operator(Time /设置小时 void SetHour(int hh); /设置分钟 /设置秒 /返回小时 /返回分钟 /返回秒 void SetM inu te(i nt mm); void SetSec on d(i nt ss); int GetHour() con st; int GetMi nu te() con st; int GetSec on d() con st; int GetSall() const; ; Time:Time() sec on d=0; hour=0; minu te=0; sall=0; Time T

22、ime:operato 叶(Time a) Time temp; temp.sall=sall+a.sall; temp.hour=temp.sall/3600; temp. minu te=(temp.sall-3600*temp.hour)/60; temp.seco nd=temp.sall%60; return temp; Time Time:operator-(Time a) Time temp; temp.sall=sall-a.sall; temp.hour=temp.sall/3600; temp. minu te=(temp.sall-3600*temp.hour)/60;

23、temp.seco nd=temp.sall%60; return temp; Time Time:operator(Time a.sec on d=sec ond; a.hour=hour; a.sall=sall; return a; void Time:SetHour(int hh) hour=hh; void Time:SetMi nute(i nt mm) mi nute=mm; void Time:SetSec on d(i nt ss) sec on d=ss; sall=3600*hour+60*mi nute+seco nd; int Time:GetHour() const retur n hour; /设置小时 /设置分钟 /设置秒 /返回小时 int Time:GetMi nute() const /返回分钟 return min ute; int Time:GetSec on d() const /返回秒 retur n sec ond; int Time:GetSall() const return sail; int main() Time t1,t2,t3,t4,t5,t6,t7,t8; int s1,s2,h1,h2,m1,m2; cout请输入时分秒(1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论