当前位置: 首页 > news >正文

C++类与对象的的第三个简单的实战练习-3.25笔记

哔哩哔哩C++面向对象高级语言程序设计教程(118集全)

简单实战三

在这里插入图片描述

创建项目

  1. 打开VS,点击创建一个新项目
    在这里插入图片描述
  2. 创建一个空项目
    在这里插入图片描述
  3. 点击下一步
    在这里插入图片描述
  4. 点击工程名称,选择添加
    在这里插入图片描述
  5. 选择新建项
    在这里插入图片描述
  6. 选择C++类

在这里插入图片描述

  1. 取名
    在这里插入图片描述
  2. 点击确定,这时候还需要一个main.cpp
    像4和5步一样,但是不选择C++类,而选择C++文件(.cpp)
    弄完了之后,界面就是三个文件
    在这里插入图片描述
  3. 将源.cpp修改为main.cpp(右击鼠标选择重命名)
    最终的页面就是这样
    在这里插入图片描述

根据项目需求写代码

在compare.h中创建两个类(AdvCircle和Point)
#pragma once
class Point
{
private:
	double m_x;
	double m_y;
public:
	void setX(void);
	void setY(void);
	double getX(void);
	double getY(void);
};

class AdvCircle
{
private:
	double m_x;
	double m_y;
	double m_r;
public:
	void setX(void);
	void setY(void);
	void setR(void);
	double getX(void);
	double getY(void);
	double getR(void);
	int compare(Point& p1);
};

在compare.cpp中实现方法
#include "Compare.h"
#include<iostream>
using namespace std;

void Point::setX(void)
{
    cout << "请输入要比较的点的X坐标" << endl;
    cin >> m_x;
}

void Point::setY(void)
{
    cout << "请输入要比较的点的Y坐标" << endl;
    cin >> m_y;
}

double Point::getX(void)
{
    return m_x;
}

double Point::getY(void)
{
    return m_y;
}

void AdvCircle::setX(void)
{
    cout << "请输入要比较的圆的X坐标" << endl;
    cin >> m_x;
}

void AdvCircle::setY(void)
{
    cout << "请输入要比较的圆的Y坐标" << endl;
    cin >> m_y;
}

void AdvCircle::setR(void)
{
    cout << "请输入要比较的圆的R的大小" << endl;
    cin >> m_r;
}

double AdvCircle::getX(void)
{
    return m_x;
}

double AdvCircle::getY(void)
{
    return m_y;
}

double AdvCircle::getR(void)
{
    return m_r;
}

int AdvCircle::compare(Point& p1)
{
    double result;
    result = (p1.getX() - m_x) * (p1.getX() - m_x) + (p1.getY() - m_y) * (p1.getY() - m_y);
    if (result == m_r * m_r) {
        return 1;
    }
    else if (result <= m_r * m_r) {
        return 2;
    }
    else return 3;
}

在main.cpp中实例化对象
#include<iostream>
#include"Compare.h"
using namespace std;

//判断位置关系的全局函数的实现
int compare1(AdvCircle &c,Point &p) {
	double result;
	result = (p.getX() - c.getX()) * (p.getX() - c.getX()) + (p.getY() - c.getY()) * (p.getY() - c.getY());
	if (result == c.getR() * c.getR()) {
		return 1;
	}
	else if (result <= c.getR() * c.getR()) {
		return 2;
	}
	else return 3;
}

int main() {
	//使用两个类分别实例化两个对象
	AdvCircle c;
	Point p;

	//得到点的x,y坐标
	p.setX();
	p.setY();


	//得到圆的x,y坐标和r的大小
	c.setX();
	c.setY();
	c.setR();
	 
	
	//使用成员函数判断位置关系
	if (c.compare(p)==1) {
		cout << "点在圆内" << endl;
	}
	else if (c.compare(p) == 2) {
		cout << "点在圆内" << endl;
	}
	else cout << "点在圆外" << endl;


	//使用全局函数判断位置关系
	if (compare1(c,p) == 1) {
		cout << "点在圆内" << endl;
	}
	else if (compare1(c,p) == 2) {
		cout << "点在圆内" << endl;
	}
	else cout << "点在圆外" << endl;
}

运行结果

在这里插入图片描述

相关文章:

  • SvelteKit 最新中文文档教程(10)—— 部署 Cloudflare Pages 和 Cloudflare Workers
  • 【HarmonyOS Next】三天撸一个BLE调试精灵
  • 记录firefly的3566-sdk的下载及解压更新
  • docker使用命令笔记
  • Java多线程精讲:线程操作与状态转换全解析
  • Mycat安装验证流程整理
  • 深度学习|表示学习|多头注意力在计算时常见的张量维度变换总结|28
  • C盘急救实录:从爆红到畅快
  • 量子计算模拟中的测量与噪声建模:基于 3 量子比特系统分析
  • AI-Sphere-Butler之Ubuntu服务器如何部署Nginx代理,并将HTTP升级成HTTPS,用于移动设备访问
  • 余弦退火算法与学习率预热
  • Apache HttpClient使用
  • 内核编程十二:打印task_struct中的数据
  • 高性能C#定时删除图片,包含定时触发、分批删除、异步处理和资源监控
  • JavaScript基础-常用的鼠标事件
  • 卷积神经网络的原理、实现及变体
  • c语言基础编程入门练习题(三)
  • 工欲善其事必先利其器————idea插件
  • 11_JavaScript_字符串方法+数学方法
  • react中防止数据多大并需要二次加工处理进行单线程转多线程webworker优化处理(不借助react-webworker)
  • VM2008 做网站/百度一下你就知道手机版
  • 焦作有网站建设公司/市场营销策划书
  • 外贸网站日本/市场推广计划方案模板
  • 富阳做网站洛洛科技/品牌全案营销策划
  • b2b商城网站建设/优化设计数学
  • 应届生在淮北招的网站建设类型岗位/seo公司是做什么的