#include<iostream> #include<cstring> using namespace std; class Dates{ public: Dates(int y=0,int m=0,int d=0):year(y),month(m),day(d){ } ~Dates(){ } int GetYear(){return year;} int GetMonth(){return month;} int GetDay(){return day;} private: //**********found********** ; // 开花日期(年月日) }; //**********found********** class Plants: { public: Plants(char*n,int y=0,int m=0,int d=0); ~Plants(); char*GetName(); private: char *name; // 植物名称 }; //**********found********** Plants::Plants(char*n,int y,int m,int d): { int length; length=strlen(n); name=new char[length+1]; strcpy(name,n); } Plants::~Plants() { delete []name; } char* Plants::GetName() { return name ; } bool IsEqual(Plants &pa,Plants &pb) // 判断pa和pb开花日期是否相同,是返回真,否则返回假 { if(pa.GetYear()==pb.GetYear()) //**********found********** if() if(pa.GetDay()==pb.GetDay())return true; return false; } int main() { Plants plantA("桃",2020,3,10); Plants plantB("杏",2020,4,5); cout<<plantA.GetName()<<"开花时间是:"<<plantA.GetYear()<<'-'<<plantA.GetMonth()<<'-'<<plantA.GetDay()<<endl; cout<<plantB.GetName()<<"开花时间是:"<<plantB.GetYear()<<'-'<<plantB.GetMonth()<<'-'<<plantB.GetDay()<<endl; if(IsEqual(plantA,plantB)) cout<<plantA.GetName()<<"和"<<plantB.GetName()<<"在同一天开花。"<<endl; else cout<<plantA.GetName()<<"和"<<plantB.GetName()<<"不在同一天开花。"<<endl; system("pause"); return 0; }
时间: 2023-07-23 11:21:22 浏览: 82
在 Dates 类中,需要添加三个私有成员变量来存储开花日期的年、月、日。具体实现可参考如下代码:
```c++
class Dates{
public:
Dates(int y=0,int m=0,int d=0):year(y),month(m),day(d){ }
~Dates(){ }
int GetYear(){return year;}
int GetMonth(){return month;}
int GetDay(){return day;}
private:
int year; // 年
int month; // 月
int day; // 日
};
```
在 Plants 类的构造函数和 IsEqual 函数中,需要使用 Dates 类来存储和比较开花日期。具体实现可参考如下代码:
```c++
class Plants{
public:
Plants(char*n,int y=0,int m=0,int d=0);
~Plants();
char*GetName();
Dates GetDate(){return date;}
private:
char *name; // 植物名称
Dates date; // 开花日期
};
Plants::Plants(char*n,int y,int m,int d):date(y,m,d){
int length;
length=strlen(n);
name=new char[length+1];
strcpy(name,n);
}
bool IsEqual(Plants &pa,Plants &pb){
if(pa.GetDate().GetYear()==pb.GetDate().GetYear() && pa.GetDate().GetMonth()==pb.GetDate().GetMonth() && pa.GetDate().GetDay()==pb.GetDate().GetDay())
return true;
return false;
}
```
在 main 函数中,需要修改输出开花日期的代码,具体实现可参考如下代码:
```c++
int main() {
Plants plantA("桃",2020,3,10);
Plants plantB("杏",2020,4,5);
cout<<plantA.GetName()<<"开花时间是:"<<plantA.GetDate().GetYear()<<'-'<<plantA.GetDate().GetMonth()<<'-'<<plantA.GetDate().GetDay()<<endl;
cout<<plantB.GetName()<<"开花时间是:"<<plantB.GetDate().GetYear()<<'-'<<plantB.GetDate().GetMonth()<<'-'<<plantB.GetDate().GetDay()<<endl;
if(IsEqual(plantA,plantB))
cout<<plantA.GetName()<<"和"<<plantB.GetName()<<"在同一天开花。"<<endl;
else
cout<<plantA.GetName()<<"和"<<plantB.GetName()<<"不在同一天开花。"<<endl;
system("pause");
return 0;
}
```
阅读全文