第八章编程作业

文章目录

日期类

题目内容:

设计一个日期类(Date),用来实现日期的操作。包括一个空构造函数,三个成员函数,其余所需自行决定。

用成员函数setDate()用来给Date类设置日期。

用成员函数isLeapYear()用来判断是否是闰年。

用成员函数getSkip(Date o)用来计算两个日期之间相差的天数。

输入格式:

输入两个日期,输入格式参考样例。

输出格式:

判断两个日期是否是闰年,以及两个日期的间隔天数,输出格式参考样例。

输入样例:

 2012 10 20
 2017 11 07

输出样例:

 2012 is leap year.
 2017 is not leap year.
 The skip of two date is 1844.
#include <iostream>
#include <algorithm>
using namespace std;
class Date{
private:
	int y;
	int m;
	int d;
public:
	Date(){
		
	}
	Date(int y1,int m1,int d1){
		y = y1;
		m = m1;
		d = d1;
	}
	void serDate(int y2,int m2,int d2){
		y = y2;
		m = m2;
		d = d2;
	}
	bool isLeapYear(int y){
		if(y%400 == 0||y%4 == 0&&y%100!=0){
			return true;
		}
		else
		return false;
	}
	int getSkip(Date date1){
		bool s = true;
		int sum1 = 0;
		int sum2 = 0;
		int sum3 = 0;
		int count;
		int pp = y;
		int qq = date1.y;
		if(pp<qq){
			swap(qq,pp);
			s = false;
		}
		for(int p = qq;p<pp;p++){
			if(isLeapYear(p))
			sum1 += 366;
			else
			sum1 += 365;
		}
		int m1[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
		int m2[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
		if(isLeapYear(y))
		m1[1] = 29;
		if(isLeapYear(date1.y))
		m2[1] = 29;
		for(int i = 0;i<m-1;i++){
			sum2 += m1[i];
		}
		for(int i = 0;i<date1.m-1;i++){
			sum3 += m2[i];
		}
		if(!s){
			swap(sum2,sum3);
			swap(d,date1.d);
		}
		count = sum1+sum2-sum3+d-date1.d;
		return count;
	}
};
int main(){
	int y1,y2,m1,m2,d1,d2;
	cin>>y1>>m1>>d1;
	cin>>y2>>m2>>d2;
	Date date1(y1,m1,d1);
	Date date2(y2,m2,d2);
	if(date1.isLeapYear(y1))
	cout<<y1<<" is leap year."<<endl;
	else
	cout<<y1<<" is not leap year."<<endl;
	if(date2.isLeapYear(y2))
	cout<<y2<<" is leap year."<<endl;
	else
	cout<<y2<<" is not leap year."<<endl;
	cout<<"The skip of two date is ";
	cout<<date2.getSkip(date1)<<".";
	return 0;
}

三角形类

题目内容:

先定义一个能描述平面上一条线段的类Beeline,包含私有数据成员为线段两个端点的坐标(X1,Y1,X2,Y2),在类中定义形参默认值为0的构造函数,计算线段长度的公有成员函数Length(),显示线段两个端点坐标的公有成员函数show()。然后再定义一个能描述平面上三角形的类Triangle,其数据成员为用Beeline定义的对象line1,line2,line3。在类中定义的构造函数要能对对象成员进行初始化。再定义计算三角形面积的函数Area()及显示三条边端点坐标及面积的函数Print(),Print()函数中可调用show()函数显示三条边两端点坐标。

输入格式:

输入三角形三个顶点的坐标(x1,y1)、(x2,y2)、(x3,y3)。

其中 -100 <= x1,x2,x3,y1,y2,y3 <= 100,且为整数。

在主函数中创建类对象tri(x1,y1,x2,y2,x3,y3),对应line1(x1, y1, x2, y2),line2(x2,y2,x3,y3),line3(x3,y3,x1,y1)。

输出格式:

调用Print()函数,将三角形三条边的端点坐标及面积。面积保留两位小数。

输入样例:

  0 0
  0 4
  3 0

输出样例:

    Three edges' points are listed as follows:
    (0, 0),(0, 4)
    (0, 4),(3, 0)
    (3, 0),(0, 0)
    The area of this triangle is: 6.00.
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
class Beeline{
private:
	int x1,y1,x2,y2;
public:
	Beeline(){
		x1 = x2 = y1 = y2 = 0;	
	}
	Beeline(int x3,int y3,int x4,int y4){
		x1 = x3;
		y1 = y3;
		x2 = x4;
		y2 = y4;
	}
	double Length(){
		return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	}
	void show(){
		std::cout<<"("<<x1<<", "<<y1<<"),("<<x2<<", "<<y2<<")"<<std::endl;
	}
};
class Triangle{
private:
	Beeline line1,line2,line3;
public:
	Triangle(int x1,int y1,int x2,int y2,int x3,int y3):
	line1(x1,y1,x2,y2),line2(x2,y2,x3,y3),line3(x3,y3,x1,y1){
	}
	double Area(){
		double p = (line1.Length()+line2.Length()+line3.Length())/2.0;
		return sqrt(p*(p-line1.Length())*(p-line2.Length())*(p-line3.Length()));
	}
	void Print(){
		line1.show();
		line2.show();
		line3.show();
		std::cout<<"The area of this triangle is: "<<setiosflags(ios::fixed)
		<<setprecision(2)<<Area()<<".";
	}
};
int main(){
	int x1,x2,x3,y1,y2,y3;
	cin>>x1>>y1;
	cin>>x2>>y2;
	cin>>x3>>y3;
	Triangle tri(x1,y1,x2,y2,x3,y3);
	std::cout<<"Three edges' points are listed as follows:"<<std::endl;
	tri.Print();
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值