高等程序设计实验报告总结归纳.docx

上传人:b****3 文档编号:4966601 上传时间:2022-12-12 格式:DOCX 页数:21 大小:19.86KB
下载 相关 举报
高等程序设计实验报告总结归纳.docx_第1页
第1页 / 共21页
高等程序设计实验报告总结归纳.docx_第2页
第2页 / 共21页
高等程序设计实验报告总结归纳.docx_第3页
第3页 / 共21页
高等程序设计实验报告总结归纳.docx_第4页
第4页 / 共21页
高等程序设计实验报告总结归纳.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

高等程序设计实验报告总结归纳.docx

《高等程序设计实验报告总结归纳.docx》由会员分享,可在线阅读,更多相关《高等程序设计实验报告总结归纳.docx(21页珍藏版)》请在冰豆网上搜索。

高等程序设计实验报告总结归纳.docx

高等程序设计实验报告总结归纳

高等程序设计实验报告

实验名称

实验12运算符重载

(2)

系别

姓名

学号

班级

实验时间

实验地点

实验成绩

一、实验目的及要求

进一步理解运算符重载,运用成员函数和友元函数等方法实现运算符的重载。

二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)

硬件设备:

联网的个人计算机

操作系统:

Windowsxp

编译系统:

DevC++

三、实验内容及步骤(包含简要的实验步骤流程)

1、重载函数调用运算符(),将以下的二维数组的下标表示方法:

chessBoard[row][column]改为常用的表示方法:

chessBoard(row,column)

2、重载下标运算符使之返回集合中最大的元素、次最大的元素以及第三大的元素。

3、开发多项式类Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。

例如:

2x4的指数为4,系数为2。

请开发一个完整的Polynomial类,包括构造函数、析构函数以及"get"函数和"set"函数。

该类还要提供下述重载的运算符(分别使用成员函数和友元函数):

1)重载加法运算符+,将两个多项式相加;

2)重载减法运算符-,将两个多项式相减;

3)重载赋值运算符=,将一个多项式赋给另外一个多项式;

4)重载乘法算符*,将两个多项式相乘;

5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*=。

4.设计一个日期类Date,,要求:

(1)包含年(year)、月(month)和日(day)私有数据成员。

(2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-、重载输出运算符<<与输入运算符>>等。

提示:

由于各C++编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:

voidSetYear(inty);//设置年

intSetMonth(intm);//设置月

intSetDay(intd);//设置日

intGetYear()const;//返回年

intGetMonth()const;//返回月

intGetDay()const;//返回日

staticintIsLeapyear(inty);//判断年份y是否为润年

staticintGetDays(inty);//年份y的天数

staticintGetDays(constDate&d);//日期d当前月份的天数

staticintDateToNum(constDate&d);//返回从公元1年1月1日起的天数

staticDateNumToDate(intn);//由从公元1年1月1日起的天数返回日期

润年条件:

年份能被4整除,并且年份不能被100整除,或者年份能被400整除

润年天数:

366

平年天数:

365

润年2月份天数:

29

平年2月份天数:

28

5.设计一个时间类Time,要求:

(1)包含时(hour)、分(minute)和秒(second)私有数据成员。

(2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间的减加运算符-、重载输出运算符<<与输入运算符>>等。

提示:

可仿照第4题编程实现,可将时间转换成秒数,将秒数转成时间进行辅助编程。

时间转换成秒数:

秒数=时*3600+分*60+秒

秒数转换成时间:

时=秒数/3600

分=(秒数-时*3600)/60

秒=秒数%60

为编程更方便,可增加一些成员函数,比如:

voidSetHour(inthh);//设置小时

voidSetMinute(intmm);//设置分钟

voidSetSecond(intss);//设置秒

intGetHour()const;//返回小时

intGetMinute()const;//返回分钟

intGetSecond()const;//返回秒

四、实验结果(包括程序或图表、结论陈述、数据记录及分析等,可附页)

1、重载函数调用运算符(),将以下的二维数组的下标表示方法:

chessBoard[row][column]改为常用的表示方法:

chessBoard(row,column)

代码实现:

#include

#include<>

usingnamespacestd;

classshuzu{

intchessBoard[8][8];

public:

shuzu(){

for(inti=0;i<8;i++)

for(intj=0;j<8;j++)

chessBoard[i][j]=i+j;

}

intoperator()(inta,intb){returnchessBoard[a][b];}

};

intmain()

{

shuzua;

cout<<"输出(6,7)="<

cout<<"矩阵:

"<

for(inti=0;i<8;i++)

{

for(intj=0;j<8;j++)

cout<

cout<

}

getch();

return0;

}

结果截图:

2、重载下标运算符使之返回集合中最大的元素、次最大的元素以及第三大的元素。

3、开发多项式类Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。

例如:

2x4的指数为4,系数为2。

请开发一个完整的Polynomial类,包括构造函数、析构函数以及"get"函数和"set"函数。

该类还要提供下述重载的运算符(分别使用成员函数和友元函数):

1)重载加法运算符+,将两个多项式相加;

2)重载减法运算符-,将两个多项式相减;

3)重载赋值运算符=,将一个多项式赋给另外一个多项式;

4)重载乘法算符*,将两个多项式相乘;

5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*=。

代码实现:

#include

#include<>

usingnamespacestd;

classJ

{

private:

inta[5];

public:

J(ints[])

{

for(inti=0;i<5;i++)

a[i]=s[i];

}

voidpaixu()

{

for(inti=0;i<4;i++)

{

for(intj=0;j<4-i;j++)

{

if(a[j]>a[j+1])

{

inttemp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

}

intoperator[](intb)

{

returna[b];

}

};

intmain()

{

ints[5];

cout<<"请输入5个数:

"<

for(inti=0;i<5;i++)

{

cin>>s[i];

}

Jj(s);

();

cout<<"最大的元素、次最大的元素以及第三大的元素依次为:

"<

getch();

return0;

}

结果截图:

4.设计一个日期类Date,,要求:

(1)包含年(year)、月(month)和日(day)私有数据成员。

(2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-、重载输出运算符<<与输入运算符>>等。

提示:

由于各C++编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:

voidSetYear(inty);//设置年

intSetMonth(intm);//设置月

intSetDay(intd);//设置日

intGetYear()const;//返回年

intGetMonth()const;//返回月

intGetDay()const;//返回日

staticintIsLeapyear(inty);//判断年份y是否为润年

staticintGetDays(inty);//年份y的天数

staticintGetDays(constDate&d);//日期d当前月份的天数

staticintDateToNum(constDate&d);//返回从公元1年1月1日起的天数

staticDateNumToDate(intn);//由从公元1年1月1日起的天数返回日期

润年条件:

年份能被4整除,并且年份不能被100整除,或者年份能被400整除

润年天数:

366

平年天数:

365

润年2月份天数:

29

平年2月份天数:

28

(1)程序实现

#include""

#include<>

classDate

{

public:

Date(inta=0,intb=0,intc=0);

voidSet_Date(inta,intb,intc);

voidGet_Date();

Dateoperator+(int);

Dateoperator-(int);

friendostream&operator<<(ostream&,Date&);

friendistream&operator>>(istream&,Date&);

private:

intyear,mounth,date,m;

};

Date:

:

Date(inta,intb,intc)

{

year=a;

mounth=b;

date=c;

m=1;

}

voidDate:

:

Set_Date(inta,intb,intc)

{

year=a;

mounth=b;

date=c;

}

voidDate:

:

Get_Date()

{

if(m==1)

cout<

else

cout<<"刚才输入的天数不符合要求!

"<

}

DateDate:

:

operator+(inta)

{

if(a>28)

{

m=0;

return*this;

}

else

{

if((year%400==0)||((year%4==0)&&(year%100!

=0)))

{

if((mounth==4)||(mounth==6)||(mounth==9)||(mounth==11))

{

if((date+a)<=30)

date=date+a;

else

{

date=date+a-30;

mounth++;

}

}

else

{

if(mounth==2)

{

if((date+a)<=29)

date=date+a;

else

{

date=date+a;

mounth++;

}

}//处理2月

else

{

if((date+a)<=31)

date=date+a;

else

{

date=date+a-31;

if(mounth==12)

{

year++;

mounth=1;

}

else

mounth++;

}

}

}

}

else

{

if((mounth==4)||(mounth==6)||(mounth==9)||(mounth==11))

{

if((date+a)<=30)

date=date+a;

else

{

date=date+a-30;

mounth++;

}

}

else

{

if(mounth==2)

{

if((date+a)<=28)

date=date+a;

else

{

date=date+a-28;

mounth++;

}

}

else

{

if((date+a)<=31)

date=date+a;

else

{

date=date+a-31;

if(mounth==12)

{

year++;

mounth=1;

}

else

mounth++;

}

}

}

}

return*this;

}

}

DateDate:

:

operator-(inta)

{

if(a>28)

{

m=0;

return*this;

}

else

{

if((year%400==0)||((year%4==0)&&(year%100!

=0)))

{

if((mounth==5)||(mounth==7)||(mounth==10)||(mounth==12))

{

if(date>=a)

date=date-a;

else

{

date=date-a+30;

mounth--;

}

}

else

{

if(mounth==3)

{

if(date>=a)

date=date-a;

else

{

date=date-a+29;

mounth--;

}

}

else

{

if(date>=a)

date=date-a;

else

{

date=date-a+31;

if(mounth==1)

{

year--;

mounth=12;

}

else

mounth--;

}

}

}

}

else

{

if((mounth==5)||(mounth==7)||(mounth==10)||(mounth==12))

{

if(date>=a)

date=date-a;

else

{

date=date-a+30;

mounth--;

}

}

else

{

if(mounth==3)

{

if(date>=a)

date=date-a;

else

{

date=date-a+28;

mounth--;

}

}

else

{

if(date>=a)

date=date-a;

else

{

date=date-a+31;

if(mounth==1)

{

year--;

mounth=12;

}

else

mounth--;

}

}

}

}

return*this;

}

}

ostream&operator<<(ostream&output,Date&a)

{

cout<<<<"年"<<<<"月"<<<<"日"<

returnoutput;

}

istream&operator>>(istream&input,Date&a)

{

cout<<"年:

";

cin>>;

cout<<"月:

";

cin>>;

cout<<"日:

";

cin>>;

returninput;

}

intmain()

{

Datea,b,c;

intx,y,z;

cout<<"请输入第一个日期:

"<

cout<<"年:

";

cin>>x;

cout<<"月:

";

cin>>y;

cout<<"日:

";

cin>>z;

(x,y,z);

c=a;

cout<<"请输入第二个日期:

"<

cin>>b;

cout<<"请输入需要加上的天数:

"<

cin>>z;

a=a+z;

cout<<"日期"<

"<

();

a=c;

cout<<"请输入需要减去的天数:

"<

cin>>z;

cout<<"日期"<

"<

b=b-z;

();

getch();

return0;

}

(2)结果截图

5.设计一个时间类Time,要求:

(1)包含时(hour)、分(minute)和秒(second)私有数据成员。

(2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间的减加运算符-、重载输出运算符<<与输入运算符>>等。

提示:

可仿照第4题编程实现,可将时间转换成秒数,将秒数转成时间进行辅助编程。

时间转换成秒数:

秒数=时*3600+分*60+秒

秒数转换成时间:

时=秒数/3600

分=(秒数-时*3600)/60

秒=秒数%60

为编程更方便,可增加一些成员函数,比如:

voidSetHour(inthh);//设置小时

voidSetMinute(intmm);//设置分钟

voidSetSecond(intss);//设置秒

intGetHour()const;//返回小时

intGetMinute()const;//返回分钟

intGetSecond()const;//返回秒

代码实现:

#include

#include<>

usingnamespacestd;

classTime

{

inthour,minute,second,sall;

public:

Time();

Timeoperator+(Timea);

Timeoperator-(Timea);

Timeoperator<<(Time&a);

Timeoperator>>(Time&a);

voidSetHour(inthh);//设置小时

voidSetMinute(intmm);//设置分钟

voidSetSecond(intss);//设置秒

intGetHour()const;//返回小时

intGetMinute()const;//返回分钟

intGetSecond()const;//返回秒

intGetSall()const;

};

Time:

:

Time()

{

second=0;

hour=0;

minute=0;

sall=0;

}

TimeTime:

:

operator+(Timea)

{

Timetemp;

=sall+;

=3600;

=*/60;

=%60;

returntemp;

}

TimeTime:

:

operator-(Timea)

{

Timetemp;

=;

=3600;

=*/60;

=%60;

returntemp;

}

TimeTime:

:

operator<<(Time&a)

{

minute=;

hour=;

second=;

sall=;

return*this;

}

TimeTime:

:

operator>>(Time&a)

{

=minute;

=second;

=hour;

=sall;

returna;

}

voidTime:

:

SetHour(inthh)//设置小时

{

hour=hh;

}

voidTime:

:

SetMinute(intmm)//设置分钟

{

minute=mm;

}

voidTime:

:

SetSecond(intss)//设置秒

{

second=ss;

sall=3600*hour+60*minute+second;

}

intTime:

:

GetHour()const//返回小时

{

returnhour;

}

intTime:

:

GetMinute()const//返回分钟

{

returnminute;

}

intTime:

:

GetSecond()const//返回秒

{

returnsecond;

}

intTime:

:

GetSall()const

{

returnsall;

}

intmain()

{

Timet1,t2,t3,t4,t5,t6,t7,t8

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1