|
|
有下列要求:
1。从键盘读入一个整数N
2。随后,读入N个学生的信息,每个学生信息包括学号,姓名,出生日期
3。再输入一个日期date
4。取出输入日期date之前出生的所有学生的信息,输出姓名和出生日期
#include <iostream>
#include<cstring>
using namespace std;
class Date
{
int year,month,day;
public:
Date()
{
}
Date(int y,int m,int d){year=y;month=m;day=d;}
void point()
{
cout<<year<<" "<<month<<" "<<day;
}
int before(Date d)
{
if(year<d.year) return 1;
if(year==d.year)
{
if(month<d.month) return 1;
if(month==d.month) return day<d.day;
}
return 0;
}
void setvalues(int Bir)
{
year=Bir/10000;
Bir%=10000;
month=Bir/100;
day=Bir%100;
}
};
class Student
{
char Stuid[15],Name[20];int Bir;
Date Birthday;
public:
void putin();
void putout();
int getbir(){return Bir;}
int bijiao(Date);
};
void Student::putin()
{
int TempBir;
cout<<"请输入学号:"<<endl;
cin.getline(Stuid,15);
cout<<"请输入姓名:"<<endl;
cin.getline(Name,20);
cout<<"请输入出生日期:"<<endl;
cin>>TempBir;
Bir=TempBir;
Birthday.setvalues(TempBir);
cin.get();
}
int Student::bijiao(Date TempBir)
{
return Birthday.before(TempBir);
}
void Student::putout()
{
cout<<"学生姓名"<<Name<<'\t'<<"出生日期";//<<Birthday<<endl;
Birthday.point();
cout<<endl;
}
int main()
{
int n,i,j;
cout<<"请输入一个正整数:"<<endl;
cin>>n;
cin.get();
Student * stu=new Student[n];
for(i=1;i<=n;i++)
{
cout<<"请输入第"<<i<<"个学生的信息:"<<endl;
stu.putin();
}
cout<<"请输入一个日期(格式为19840101)"<<endl;
int temp;
cin>>temp;
Date tempDate;
tempDate.setvalues(temp);
//for(i=0,j=0;i<=n;i++)
for(i=0,j=0;i<=n;i++)
{
char *ch;
if (stu.bijiao(tempDate)==1)
{
ch[j]=stu.getbir();
cout<<ch[j]<<endl;
j++;
}
}
return 0;
}
编译没错误,运行输入学生信息,然后再输入一个时间date后就会出错,是不是ch[j]=stu.getbir(); 这句的问题?请大家帮我看看,谢谢了! |
|