高等程序设计实验报告总结归纳
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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);//判断年份y是否为润年
2)重载减法运算符-,将两个多项式相减;
3)重载赋值运算符=,将一个多项式赋给另外一个多项式;
4)重载乘法算符*,将两个多项式相乘;
5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*=。
4.设计一个日期类Date,,要求:
(1)包含年(year)、月(month)和日(day)私有数据成员。
}
}
Date Date::operator-(int a)
{
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))
};
int main()
{
shuzu a;
cout<<"输出(6,7)="<<a(6,7)<<endl;
cout<<"矩阵:"<<endl;
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
cout<<a(i,j)<<"\t";
cout<<endl;
}
getch();
润年条件:年份能被4整除,并且年份不能被100整除,或者年份能被400整除
润年天数:366
平年天数:365
润年2月份天数:29
平年2月份天数:28
(1)程序实现
#include""
#include<>
class Date
{
public:
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<<(ostream&, Date&);
friend istream& operator>>(istream&, Date&);
private:
int chessBoard[8][8];
public:
shuzu(){
for (int i=0;i<8;i++)
for(int j=0;j<8;j++)
chessBoard[i][j]=i+j;
}
int operator()(int a,int b){return chessBoard[a][b];}
提示:可仿照第4题编程实现,可将时间转换成秒数,将秒数转成时间进行辅助编程。
时间转换成秒数:
秒数=时* 3600 +分* 60 +秒
秒数转换成时间:
时=秒数/ 3600
分= (秒数-时* 3600) / 60
秒=秒数% 60
为编程更方便,可增加一些成员函数,比如:
void SetHour(int hh);//设置小时
int year,mounth,date,m;
};
Date::Date(int a,int b,int c)
{
year=a;
mounth=b;
date=c;
m=1;
}
void Date::Set_Date(int a,int b,int c)
{
year=a;
mounth=b;
date=c;
}
void Date::Get_Date()
return 0;
}
结果截图:
2、重载下标运算符使之返回集合中最大的元素、次最大的元素以及第三大的元素。
3、开发多项式类Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。例如:2x4的指数为4,系数为2。
请开发一个完整的Polynomial类,包括构造函数、析构函数以及"get"函数和"set"函数。该类还要提供下述重载的运算符(分别使用成员函数和友元函数):
(2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-、重载输出运算符<<与输入运算符>>等。
提示:由于各C++编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:
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
{
cin>>s[i];
}
J j(s);
();
cout<<"最大的元素、次最大的元素以及第三大的元素依次为:"<<j[4]<<","<<j[3]<<","<<j[2]<<endl;
getch();
return 0;
}
结果截图:
4.设计一个日期类Date,,要求:
(1)包含年(year)、月(month)和日(day)私有数据成员。
编译系统:DevC++
三、实验内容及步骤(包含简要的实验步骤流程)
1、重载函数调用运算符(),将以下的二维数组的下标表示方法:
chessBoard[row][column]改为常用的表示方法:
chessBoard(row,column)
2、重载下标运算符使之返回集合中最大的元素、次最大的元素以及第三大的元素。
{
if(a[j]>a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int operator[](int b)
{
return a[b];
}
};
int main()
{
int s[5];
cout<<"请输入5个数:"<<endl;
for(int i=0;i<5;i++)
{
if(date>=a)
date=date-a;
else
{
date=date-a+30;
mounth--;
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;
using namespace std;
class J
{
private:
intຫໍສະໝຸດ Baidua[5];
public:
J(int s[])
{
for(int i=0;i<5;i++)
a[i]=s[i];
}
void paixu()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4-i;j++)
3、开发多项式类Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。例如:2x4的指数为4,系数为2。
请开发一个完整的Polynomial类,包括构造函数、析构函数以及"get"函数和"set"函数。该类还要提供下述重载的运算符(分别使用成员函数和友元函数):
1)重载加法运算符+,将两个多项式相加;
1、重载函数调用运算符(),将以下的二维数组的下标表示方法:
chessBoard[row][column]改为常用的表示方法:
chessBoard(row,column)
代码实现:
#include<iostream>
#include<>
using namespace std;
class shuzu{
{
if(m==1)
cout<<year<<"年"<<mounth<<"月"<<date<<"日"<<endl;
else
cout<<"刚才输入的天数不符合要求!"<<endl;
}
Date Date::operator+(int a)
{
if(a>28)
{
m=0;
return *this;
}
else
{
if((year%400==0)||((year%4==0)&&(year%100!=0)))
高等程序设计实验报告
实验名称
实验12 运算符重载(2)
系 别
姓 名
学 号
班 级
实验时间
实验地点
实验成绩
一、实验目的及要求
进一步理解运算符重载,运用成员函数和友元函数等方法实现运算符的重载。
二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)
硬件设备:联网的个人计算机
操作系统:Windowsxp
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日起的天数返回日期
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);//判断年份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日起的天数返回日期
1)重载加法运算符+,将两个多项式相加;
2)重载减法运算符-,将两个多项式相减;
3)重载赋值运算符=,将一个多项式赋给另外一个多项式;
4)重载乘法算符*,将两个多项式相乘;
5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*=。
代码实现:
#include<iostream>
#include<>
(2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-、重载输出运算符<<与输入运算符>>等。
提示:由于各C++编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:
{
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)
润年条件:年份能被4整除,并且年份不能被100整除,或者年份能被400整除
润年天数:366
平年天数:365
润年2月份天数:29
平年2月份天数:28
5.设计一个时间类Time,要求:
(1)包含时(hour)、分(minute)和秒(second)私有数据成员。
(2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间的减加运算符-、重载输出运算符<<与输入运算符>>等。
{
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)
void SetMinute(int mm);//设置分钟
void SetSecond(int ss);//设置秒
int GetHour() const;//返回小时
int GetMinute() const;//返回分钟
int GetSecond() const;//返回秒
4、实验结果(包括程序或图表、结论陈述、数据记录及分析等,可附页)
int SetMonth(int m);//设置月
int SetDay(int d);//设置日
int GetYear() const;//返回年
int GetMonth() const;//返回月
int GetDay() const;//返回日
static int IsLeapyear(int y);//判断年份y是否为润年
2)重载减法运算符-,将两个多项式相减;
3)重载赋值运算符=,将一个多项式赋给另外一个多项式;
4)重载乘法算符*,将两个多项式相乘;
5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*=。
4.设计一个日期类Date,,要求:
(1)包含年(year)、月(month)和日(day)私有数据成员。
}
}
Date Date::operator-(int a)
{
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))
};
int main()
{
shuzu a;
cout<<"输出(6,7)="<<a(6,7)<<endl;
cout<<"矩阵:"<<endl;
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
cout<<a(i,j)<<"\t";
cout<<endl;
}
getch();
润年条件:年份能被4整除,并且年份不能被100整除,或者年份能被400整除
润年天数:366
平年天数:365
润年2月份天数:29
平年2月份天数:28
(1)程序实现
#include""
#include<>
class Date
{
public:
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<<(ostream&, Date&);
friend istream& operator>>(istream&, Date&);
private:
int chessBoard[8][8];
public:
shuzu(){
for (int i=0;i<8;i++)
for(int j=0;j<8;j++)
chessBoard[i][j]=i+j;
}
int operator()(int a,int b){return chessBoard[a][b];}
提示:可仿照第4题编程实现,可将时间转换成秒数,将秒数转成时间进行辅助编程。
时间转换成秒数:
秒数=时* 3600 +分* 60 +秒
秒数转换成时间:
时=秒数/ 3600
分= (秒数-时* 3600) / 60
秒=秒数% 60
为编程更方便,可增加一些成员函数,比如:
void SetHour(int hh);//设置小时
int year,mounth,date,m;
};
Date::Date(int a,int b,int c)
{
year=a;
mounth=b;
date=c;
m=1;
}
void Date::Set_Date(int a,int b,int c)
{
year=a;
mounth=b;
date=c;
}
void Date::Get_Date()
return 0;
}
结果截图:
2、重载下标运算符使之返回集合中最大的元素、次最大的元素以及第三大的元素。
3、开发多项式类Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。例如:2x4的指数为4,系数为2。
请开发一个完整的Polynomial类,包括构造函数、析构函数以及"get"函数和"set"函数。该类还要提供下述重载的运算符(分别使用成员函数和友元函数):
(2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-、重载输出运算符<<与输入运算符>>等。
提示:由于各C++编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:
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
{
cin>>s[i];
}
J j(s);
();
cout<<"最大的元素、次最大的元素以及第三大的元素依次为:"<<j[4]<<","<<j[3]<<","<<j[2]<<endl;
getch();
return 0;
}
结果截图:
4.设计一个日期类Date,,要求:
(1)包含年(year)、月(month)和日(day)私有数据成员。
编译系统:DevC++
三、实验内容及步骤(包含简要的实验步骤流程)
1、重载函数调用运算符(),将以下的二维数组的下标表示方法:
chessBoard[row][column]改为常用的表示方法:
chessBoard(row,column)
2、重载下标运算符使之返回集合中最大的元素、次最大的元素以及第三大的元素。
{
if(a[j]>a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int operator[](int b)
{
return a[b];
}
};
int main()
{
int s[5];
cout<<"请输入5个数:"<<endl;
for(int i=0;i<5;i++)
{
if(date>=a)
date=date-a;
else
{
date=date-a+30;
mounth--;
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;
using namespace std;
class J
{
private:
intຫໍສະໝຸດ Baidua[5];
public:
J(int s[])
{
for(int i=0;i<5;i++)
a[i]=s[i];
}
void paixu()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4-i;j++)
3、开发多项式类Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。例如:2x4的指数为4,系数为2。
请开发一个完整的Polynomial类,包括构造函数、析构函数以及"get"函数和"set"函数。该类还要提供下述重载的运算符(分别使用成员函数和友元函数):
1)重载加法运算符+,将两个多项式相加;
1、重载函数调用运算符(),将以下的二维数组的下标表示方法:
chessBoard[row][column]改为常用的表示方法:
chessBoard(row,column)
代码实现:
#include<iostream>
#include<>
using namespace std;
class shuzu{
{
if(m==1)
cout<<year<<"年"<<mounth<<"月"<<date<<"日"<<endl;
else
cout<<"刚才输入的天数不符合要求!"<<endl;
}
Date Date::operator+(int a)
{
if(a>28)
{
m=0;
return *this;
}
else
{
if((year%400==0)||((year%4==0)&&(year%100!=0)))
高等程序设计实验报告
实验名称
实验12 运算符重载(2)
系 别
姓 名
学 号
班 级
实验时间
实验地点
实验成绩
一、实验目的及要求
进一步理解运算符重载,运用成员函数和友元函数等方法实现运算符的重载。
二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)
硬件设备:联网的个人计算机
操作系统:Windowsxp
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日起的天数返回日期
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);//判断年份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日起的天数返回日期
1)重载加法运算符+,将两个多项式相加;
2)重载减法运算符-,将两个多项式相减;
3)重载赋值运算符=,将一个多项式赋给另外一个多项式;
4)重载乘法算符*,将两个多项式相乘;
5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*=。
代码实现:
#include<iostream>
#include<>
(2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-、重载输出运算符<<与输入运算符>>等。
提示:由于各C++编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:
{
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)
润年条件:年份能被4整除,并且年份不能被100整除,或者年份能被400整除
润年天数:366
平年天数:365
润年2月份天数:29
平年2月份天数:28
5.设计一个时间类Time,要求:
(1)包含时(hour)、分(minute)和秒(second)私有数据成员。
(2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间的减加运算符-、重载输出运算符<<与输入运算符>>等。
{
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)
void SetMinute(int mm);//设置分钟
void SetSecond(int ss);//设置秒
int GetHour() const;//返回小时
int GetMinute() const;//返回分钟
int GetSecond() const;//返回秒
4、实验结果(包括程序或图表、结论陈述、数据记录及分析等,可附页)