2014秋C++第19周 项目4参考 点和距离

简介: 课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 【项目4-点和距离】读程序,写出函数的定义,注意其中枚举类型的用法enum SymmetricStyle {axisx,axisy,point};//分别表示按x轴, y轴, 原点对称struc
课程主页在 http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在 云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 


【项目4-点和距离】
读程序,写出函数的定义,注意其中枚举类型的用法

enum SymmetricStyle {axisx,axisy,point};//分别表示按x轴, y轴, 原点对称
struct Point{
	double x;  // 横坐标
	double y;  // 纵坐标
};
double distance1(Point p1, Point p2);   // 两点之间的距离,如果用distance,将会与命名空间std中也已经定义的distance函数重名
double distance0(Point p1);
Point symmetricAxis(Point p,SymmetricStyle style);   //返回对称点
int main( ){
	Point p1={1,5},p2={4,1},p;
	cout<<"两点的距离为:"<<distance1(p1,p2)<<endl;
	cout<<"p1到原点的距离为:"<<distance0(p1)<<endl;
	p=symmetricAxis(p1,axisx);
	cout<<"p1关于x轴的对称点为:"<<"("<<p.x<<", "<<p.y<<")"<<endl;
	p=symmetricAxis(p1,axisy);
	cout<<"p1关于y轴的对称点为:"<<"("<<p.x<<", "<<p.y<<")"<<endl;
	p=symmetricAxis(p1,point);
	cout<<"p1关于原点的对称点为:"<<"("<<p.x<<", "<<p.y<<")"<<endl;
	return 0;
}
// 求两点之间的距离  
double distance1(Point p1,Point p2)  
{  
    double d;  
    ……  
    return d;  
}  
  
// 求点到原点的距离  
double distance0(Point p)  
{  
    double d;  
    ……  
    return d;  
}  
  
// 求对称点  
Point symmetricAxis(Point p1,SymmetricStyle style)  
{  
    Point p;  
    ……
    return p;  
}  


参考解答:

#include <iostream>
#include <Cmath>
using namespace std;

enum SymmetricStyle {axisx,axisy,point};//分别表示按x轴, y轴, 原点对称
struct Point
{
	double x;  // 横坐标
	double y;  // 纵坐标
};
double distance1(Point p1, Point p2);   // 两点之间的距离
double distance0(Point p1);
Point symmetricAxis(Point p,SymmetricStyle style);   //返回对称点

int main( )
{
	Point p1={1,5},p2={4,1},p;
	cout<<"两点的距离为:"<<distance1(p1,p2)<<endl;
	cout<<"p1到原点的距离为:"<<distance0(p1)<<endl;
	p=symmetricAxis(p1,axisx);
	cout<<"p1关于x轴的对称点为:"<<"("<<p.x<<", "<<p.y<<")"<<endl;
	p=symmetricAxis(p1,axisy);
	cout<<"p1关于y轴的对称点为:"<<"("<<p.x<<", "<<p.y<<")"<<endl;
	p=symmetricAxis(p1,point);
	cout<<"p1关于原点的对称点为:"<<"("<<p.x<<", "<<p.y<<")"<<endl;
	return 0;
}

// 求两点之间的距离
double distance1(Point p1,Point p2)
{
	double d;
	d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
	return d;
}

// 求点到原点的距离
double distance0(Point p)
{
	double d;
	d=sqrt(p.x*p.x+p.y*p.y);
	return d;
}

// 求对称点
Point symmetricAxis(Point p1,SymmetricStyle style)
{
	Point p;
	p.x=p1.x;
	p.y=p1.y;
	switch(style)
	{
	case axisx:
		p.y=-p1.y; break;
	case axisy:
		p.x=-p1.x; break;
	case point:
		p.x=-p1.x;p.y=-p1.y;
	}
	return p;
}

感谢单昕昕发现distance在命名上的问题。





=================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====

目录
相关文章
WK
|
1月前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
86 1
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
573 3
|
3月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
57 3
|
5月前
|
Rust 测试技术 编译器
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
|
4月前
|
编译器 C++ 开发者
Visual Studio属性表:在新项目中加入已配置好的C++库
通过以上步骤可以确保Visual Studio中新项目成功地加入了之前已配置好的C++库。这个过程帮助开发者有效地管理多个项目中共享的库文件,提升开发效率。
128 0
|
5月前
|
Java C++ 开发者
如何根据项目需求选择使用C++还是Python进行内存管理?
【7月更文挑战第2天】如何根据项目需求选择使用C++还是Python进行内存管理?
49 0
|
7月前
|
存储 C++ UED
【C++】飞机大战项目记录
通过上面的设计,我们实现来看飞机大战的主要功能
106 4
|
7月前
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
70 0
【C++】string学习 — 手搓string类项目
|
7月前
|
C++
C++入门项目——通讯管理系统
C++入门项目——通讯管理系统
|
7月前
|
设计模式 存储 算法
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
142 0