C++实验

C++实验二 类与对象 二

    • 1、编写一个程序,程序中有两个类:Student(学生)和MyDate(日期)。具体要求如下:
    • 3、设计一个Point类,Point类中应包含x和y坐标(都是int型),在主函数中创建两个点p1和p2,要求p1点的坐标在第3象限,p2点的坐标在第2象限(坐标值通过键盘输入,若不符要求必须重新输入),分别采用成员函数和友元函数计算点p1和p2之间的距离。

1、编写一个程序,程序中有两个类:Student(学生)和MyDate(日期)。具体要求如下:

1)MyDate类中有三个int型的变量yeah、month和day表示日期的年、月、日;有一个构造函数初始化日期的年、月、日,还有一个获取日期的年的getYeah()函数;
2)Student类有一个string型的变量name表示学生的姓名、一个MyDate型的对象成员birthday表示学生的出生日期;有一个构造函数初始化学生的姓名和生日,有一个获取学生姓名的getName()成员函数,还有一个计算学生年龄的computeAge()成员函数;
3)在main函数中创建学生对象(姓名:张三,出生日期:1999年6月18日),利用Student类computeAge()函数计算该学生的年龄并输出。代码如下(不要修改):
Student s(“张三”, 1999, 6, 18);
cout< 程序的运行结果如下:
张三的年龄是:21岁

#include
#include
using namespace std;
class  MyDate{
	int year;
	int month;
	int day;
	public:
	MyDate(int y,int m,int d)
	{
		year=y;
		month=m;
		day=d;
	}
	int getYeah()
	{
		return year;
	}
}; 
class Student {
	
	string name;
	MyDate birthday;    //对象成员是类 MyDate的对象 
	
	public:	
	Student(string n, int y,int m,int d ): birthday(y,m,d)
	{
		name=n;
	}
		
		string getName()
		{
			return name;
		}
		int computeAge()
		{
			return (2020-birthday.getYeah());
		}
		
}; 

int main()
{
	Student s("张三", 1999, 6, 18);
	cout<<s.getName()<<"的年龄是:"<<s.computeAge()<<"岁"<<endl;
}

3、设计一个Point类,Point类中应包含x和y坐标(都是int型),在主函数中创建两个点p1和p2,要求p1点的坐标在第3象限,p2点的坐标在第2象限(坐标值通过键盘输入,若不符要求必须重新输入),分别采用成员函数和友元函数计算点p1和p2之间的距离。

以下是主函数代码片段:
……
double d1 = p1.dist1(p2); // dist1是计算两点距离的成员函数
double d2 = dist2(p1,p2); // dist2是计算两点距离的友元函数
cout<<“采用成员函数计算得到的点p1和p2间的距离:”< cout<<“采用友元函数计算得到的点p1和p2间的距离:”< return 0;
以下是程序的运行结果(仅供参考):
请输入第1个点的坐标值(空格隔开输入,并要求在第3象限内):
1 2
不在第3象限内,请重新输入:
1 -2
不在第3象限内,请重新输入:
-2 -3
请输入第2个点的坐标值(空格隔开输入,并要求在第2象限内):
3 4
不在第2象限内,请重新输入:
-5 -6
不在第2象限内,请重新输入:
5 -6
不在第2象限内,请重新输入:
-6 5
采用成员函数计算得到的点p1和p2间的距离:8.94427
采用友元函数计算得到的点p1和p2间的距离:8.94427

#include
#include
#include
using namespace std;

class Point{
		int x;
		int y;
		public:
		Point(int x1,int y1);
			int getX()
			{
				return x;
			}
			int getY()
			{
				return y;
			}	
			double distance(Point &d);//成员函数 
			friend double distance1(Point &a,Point &b);//友元函数 
};
Point::Point(int x1,int y1)	//定义构造函数 
			{
				x=x1;
				y=y1;
			}
			
double Point::distance(Point &d)
{
	double S;
	return S=sqrt((this->x-d.x)*(this->x-d.x)+(this->y-d.y)*(this->y-d.y));
}

double distance1(Point &a,Point &b)
{
		double S2;
	return S2=sqrt((a.getX()-b.getX())*(a.getX()-b.getX())+(a.getY()-b.getY())*(a.getY()-b.getY()));
}
int main()
{        
   	int px1,py1,px2,py2;
  	cout<<"请输入第1个点的坐标值(空格隔开输入,并要求在第3象限内):"<<endl;	
        while(1)
        {
		cin>>px1>>py1;
		
	if (px1<0&&py1<0){
        cout<<"请输入第2个点的坐标值(空格隔开输入,并要求在第2象限内):"<<endl;
			break;
		}	
		else
		{
		cout<<"不在第3象限内,请重新输入:"<<endl;
	}
}
   
while(1){			
     cin>>px2>>py2;
	if(px2<=0&&py2>=0)
	{        Point p2(px2,py2);
	         Point p1(px1,py1);
		   double D1=p1.distance(p2);
		   cout<<"采用成员函数计算得到的点p1和p2间的距离:"<<D1<<endl;
		   double D2=distance1(p1,p2);
		   cout<<"采用友元函数计算得到的点p1和p2间的距离:"<<D2<<endl;
		   break;
	}
	 
	  else {
	  		cout<<"不在第2象限内,请重新输入:"<<endl;
			
	  }
}
return 0;
}

有错误的地方,多多评论指出!

你可能感兴趣的