首页 > 编程语言 >C++ 实验 03

C++ 实验 03

时间:2024-04-04 18:32:50浏览次数:24  
标签:03 函数 Distance int double C++ p3 实验 Location

实验3.1

设计一个用来表示直角坐标系的Location类,有两个double型私有数据成员x,y;主程序中,输入相应的值,创建类Location的两个对象a和b,分别采用成员函数和友元函数计算给定两个坐标点之间的距离。

【提示】类Location的参考框架如下:

class Location

{

public:

        Location(double a,double b);   //构造函数

        double getX();    //成员函数,取x坐标的值

        double getY();    //成员函数,取y坐标的值

        double distance1(Location &);    //成员函数,求给定两点之间的距离

        friend double distance1(Location &,Location&);   //友元函数,求给定两点之间的距离

private:

        double x,y;

};

-10 8

-3 -5

第一个点:A(-10,8)

第二个点:B(-3,-5)

调用成员函数,Distance=14.7648

调用友元函数,Distance=14.7648

5 15

3 2

第一个点:A(5,15)

第一个点:B(3,2)

调用成员函数,Distance=13.1529

调用友元函数,Distance=13.1529

89 34

67 35

第一个点:A(89,34)

第一个点:B(67,35)

调用成员函数,Distance=22.0227

调用友元函数,Distance=22.0227

#include<iostream>
using namespace std;
#include<cmath>
class Location
{
public:
	Location(double a,double b):x(a),y(b){};   //构造函数
	double getX();    //成员函数,取x坐标的值
	double getY();    //成员函数,取y坐标的值
	double distance1(Location &);    //成员函数,求给定两点之间的距离
	friend double distance1(Location &,Location &);	 //友元函数,求给定两点之间的距离
private:
	double x,y;
};
double Location::getX()
{
	return x;
}
double Location::getY()
{
	return y;
}
double Location:: distance1(Location &point)
{
	return sqrt(pow((this->x-point.x),2)+pow((this->y-point.y),2));
}
double distance1(Location &point1,Location &point2)
{
	return sqrt(pow((point1.x-point2.x),2)+pow((point1.y-point2.y),2));
}
int main()
{
	double x,y;
	cin>>x>>y;
	Location a(x,y);
	cin>>x>>y;
	Location b(x,y);
	cout<<"第一个点:A("<<a.getX()<<","<<a.getY()<<")"<<endl;
	cout<<"第二个点:B("<<b.getX()<<","<<b.getY()<<")"<<endl;
	cout<<"调用成员函数,Distance="<<a.distance1(b)<<endl;
	cout<<"调用友元函数,Distance="<<distance1(a,b)<<endl;
	return 0;
}

实验3.2

设计一个计算薪水的类Payroll,数据成员包括:单位小时工资、周工作小时、每周应付工资,其中每周应付工资=单位小时工资*周工作小时。要求:定义构造函数、析构函数、拷贝构造函数,常成员函数output()用来输出对象的数据成员值。主函数中定义两个对象:第一个对象的单位小时工资、周工作小时由键盘输入,第二个对象定义为常对象,他的单位小时工资为第一个对象的1.5倍,周工作小时相同,输出每个对象的信息。

25 38

Constructor is called!

小时工资:25 周工作时数:38 周应付工资:950

Copy constructor is called!

小时工资:37.5 周工作时数:38 周应付工资:1425

Destructor is called!

Destructor is called!

30 30

Constructor is called!

小时工资:30 周工作时数:30 周应付工资:900

Copy constructor is called!

小时工资:45 周工作时数:30 周应付工资:1350

Destructor is called!

Destructor is called!

35 28

Constructor is called!

小时工资:35 周工作时数:28 周应付工资:980

Copy constructor is called!

小时工资:52.5 周工作时数:28 周应付工资:1470

Destructor is called!

Destructor is called!

#include<iostream>
using namespace std;
class Payroll
{
public:
	Payroll(double Hourwage,int Workhour)
	{
		m_Hourwage=Hourwage;
		m_Workhour=Workhour;
		m_Paywage=m_Hourwage*m_Workhour;
		cout<<"Constructor is called!"<<endl;
	}
	Payroll(Payroll& person)
	{
		m_Hourwage=person.m_Hourwage*1.5;
		m_Workhour=person.m_Workhour;
		m_Paywage=m_Hourwage*m_Workhour;
		cout<<"Constructor is called!"<<endl;
	}
	~Payroll()
	{
		cout<<"Destructor is called!"<<endl;
	}
	void output()const
	{
		cout<<"小时工资:"<<m_Hourwage<<" 周工作时数:"<<m_Workhour<<" 周应付工资:"<<m_Paywage<<endl;
	}
private:
	double m_Hourwage;
	int m_Workhour;
	double m_Paywage;
};
int main()
{
	double Hourwage;
	int Workhour;
	cin>>Hourwage>>Workhour;
	Payroll person1(Hourwage,Workhour);
	Payroll person2(person1);
	person1.output();
	person2.output();
	return 0;
}

实验3.3

定义一个平面坐标系下的点类Point,有整型数据成员x,y坐标值。成员函数包括:(1)带默认值的构造函数,默认值均为0;(2)拷贝构造函数;(3)置x,y坐标值;(4)取x,y的坐标值,参数为两个整型量的引用,分别用于获取x,y坐标值。(5)输出函数,用于输出x,y坐标值。(6)求两个点之间距离的函数,参数是Point类的对象引用。

定义一个平面坐标系下的三角形类Triangle,数据成员为三个Point类的对象p1、p2、p3。成员函数包括:(1)带参数的构造函数,参数为整型量x1,y1,x2,y2,x3,y3,分别是三角形三个顶点的坐标。(2)带参数的构造函数,参数是三个Point类对象的引用。(3)求三角形周长。(4)求三角形面积。(5)输出三角形的三个顶点坐标、周长和面积。

定义一个普通函数:判断三个顶点坐标能否构成三角形。

main()中,从键盘输入三个点坐标,判断这三个点能否构成三角形,不能,则提示重新输入,并重新输入点坐标;能,则输出三个顶点坐标、周长和面积。

0 0

1 1

2 2

0 0

5 6

3 0

顶点坐标不正确,不能构成三角形!请重新输入坐标!

三角形三个顶点坐标为:

(0,0) (5,6) (3,0)

三角形周长为:17.1348,面积为:9

0 0

3 3

0 2

三角形三个顶点坐标为:

(0,0) (3,3) (0,2)

三角形周长为:9.40492,面积为:3

1 1

6 9

8 2

三角形三个顶点坐标为:

(1,1) (6,9) (8,2)

三角形周长为:23.7852,面积为:25.5

#include<iostream>
using namespace std;
#include<cmath>
class Point
{
public:
	Point(int x=0,int y=0):m_x(x),m_y(y){}
	Point(const Point& p): m_x(p.m_x),m_y(p.m_y){}
	void Set()
	{
		cin>>this->m_x>>this->m_y;
	}
	void Get(int& x,int& y)
	{
		m_x=x;
		m_y=y;
	}
	void Print()
	{
		cout<<"("<<m_x<<","<<m_y<<")"<<" ";
	}
	double Distance(Point& p)
	{
		return sqrt((pow(double(this->m_x-p.m_x),2)+pow(double(this->m_y-p.m_y),2)));
	}
private:
	int m_x,m_y;
};
class Triangle
{
public:
	Triangle(int x1, int y1, int x2, int y2, int x3, int y3): p1(x1,y1),p2(x2,y2),p3(x3,y3){}
	Triangle(const Point& p1, const Point& p2, const Point& p3): p1(p1),p2(p2),p3(p3){}
	double Perimrter()
	{
		return p1.Distance(p2)+p1.Distance(p3)+p2.Distance(p3);
	}
	double Area()
	{
		double p=Perimrter()/2.0;
		return sqrt(p*(p-p1.Distance(p2))*(p-p1.Distance(p3))*(p-p2.Distance(p3)));
	}
	void Print()
	{
		p1.Print();
		p2.Print();
		p3.Print();
		cout<<endl<<"三角形周长为:"<<Perimrter()<<",面积为:"<<Area()<<endl;
	}
private:
	Point p1,p2,p3;
};
bool Compare(Point& p1,Point& p2,Point& p3)
{
	if(p1.Distance(p2)+p1.Distance(p3)>p2.Distance(p3)&&p2.Distance(p3)+p1.Distance(p3)>
		p1.Distance(p2)&&p2.Distance(p3)+p1.Distance(p2)>p1.Distance(p3))
	{
		cout<<"三角形三个顶点坐标为:"<<endl;
		return false;
	}
	else
	{
		cout<<"顶点坐标不正确,不能构成三角形!请重新输入坐标!"<<endl;
		return true;
	}
}
int main()
{
	Point p1,p2,p3;
	do
	{
		p1.Set();
		p2.Set();
		p3.Set();
	}
	while(Compare(p1,p2,p3));
	Triangle t(p1,p2,p3);
	t.Print();
	return 0;
}

实验3.4

使用C++中的string标准类,将5个字符串按由小到大顺序输出。

string month attack price hello

排序后的结果为:

attack hello month price string

book newspaper apple red class

排序后的结果为:

apple book class newspaper red

#include<iostream>
using namespace std;
#include<string>
#include<vector>
#include<algorithm>
int main()
{
	int i;
	vector<string> str(5);
	for(i=0;i<5;i++)
	{
		cin>>str[i];
	}
	sort(str.begin(),str.end());
	for(i=0;i<5;i++)
	{
		cout<<str[i]<<" ";
    }
	cout<<endl;
	return 0;
}

标签:03,函数,Distance,int,double,C++,p3,实验,Location
From: https://blog.csdn.net/2303_82182099/article/details/137379477

相关文章

  • 03-Java框架FTPClient 使用rename()移动文件和文件重命名
    1需求由于业务种种原因,现在需要将ftp中已存文件移动到其它文件夹。2初始策略一开始走上弯路,直接翻看FTPClientAPI有无move方法,但没发现:于是曲线救国,想着采用先复制、再删除,伪代码:InputStreaminputStream=ftpClient.retrieveFileStream("/AAA/test.txt");ftpClient.st......
  • 【c++初阶】类与对象(下)
    ✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨......
  • 算法 哈希表 day03
    哈希表当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。牺牲了空间换取了时间当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。数组set(集合)map(映射)第一题:242.有效的字母异位词-力扣(LeetCode)//暴力publicstaticboo......
  • Qt C++ | Qt 元对象系统、信号和槽及事件(第一集)
    01元对象系统一、元对象系统基本概念1、Qt的元对象系统提供的功能有:对象间通信的信号和槽机制、运行时类型信息和动态属性系统等。2、元对象系统是Qt对原有的C++进行的一些扩展,主要是为实现信号和槽机制而引入的,信号和槽机制是Qt的核心特征。3、要使用元对象系统......
  • 大数据实验记录
    网卡在Ubuntu系统下浏览器无法上网,终端输入ifconfig查看,只能看到lo本地回环网卡,没有找到ens33网卡解决方法sudodhclientens33sudoifconfigens33创建普通用户打开一个终端(可以使用快捷键Ctrl+Alt+T),使用如下命令创建一个用户hadoop:sudouseradd-mhadoop-s/bin/ba......
  • 《C++程序设计》阅读笔记【2-程序结构】
    ......
  • 软件测试和质量管理——实验3:单元测试
    《软件测试和质量管理》实验报告三一、目的和要求        1、掌握单元测试技术,并要求按照单元测试的要求设计测试用例;        2、掌握在Eclipse里进行Junit4测试的技术;        3、根据题目要求编写测试用例;        4、实验结果要求给出测......
  • 华为ENSP SSH使用RSA密钥交换进行远程登录实验
    实验拓扑:实验流程:1、AR1模拟客户端,AR2模拟远程登录服务器1、AR2开启SSH服务,配置AAA本地用户2、交换AR1和AR2的host主机密钥3、实现AR1远程登录AR2实验配置:先配置AR1和AR2的IP地址[AR1]intGigabitEthernet0/0/0[AR1-GigabitEthernet0/0/0]ipadd192.168.1.124[A......
  • 华为ENSP AC+AP二层漫游基础实验配置
    无线漫游是一种能让你的设备在移动过程中保持不间断网络连接的技术。配置流程:AC创建vlan200201,vlan200用于管理,给AP下发IP地址,vlan201用于业务给终端下发IP地址AC和SW1全部接口配置为Trunk,并且SW1的G0/0/3口和G0/0/2口需要加上PVIDAC上配置ssid模板、security模板、vap......
  • 2024.03.31新生考核Web部分 writeup
    2024.03.31新生考核Web部分writeup1.Web1考察点:burpsuite使用、http基本信息打开实例,可以看到一个网页:查看源码、cookie后无果,发现当前网页文件为inbex.php,与平常做题时默认访问的页面index.php不同,故在网址栏访问index.php。发现无论怎么访问,页面都会回到inbex.php。此......