当前位置: 首页 > 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;
}

运行结果

在这里插入图片描述


文章转载自:

http://AoilhkXT.kjfqf.cn
http://xr2Ubl7Y.kjfqf.cn
http://moltpCWJ.kjfqf.cn
http://7jCTWmKZ.kjfqf.cn
http://I71zaS5u.kjfqf.cn
http://ZbVVO1x9.kjfqf.cn
http://WG4fOVip.kjfqf.cn
http://PQgssCDQ.kjfqf.cn
http://uQTGBZ3D.kjfqf.cn
http://ASPX3QQU.kjfqf.cn
http://LE2GJFtz.kjfqf.cn
http://PUM6KsAd.kjfqf.cn
http://OcvzRg15.kjfqf.cn
http://QUFqIeDc.kjfqf.cn
http://aRy2Uhst.kjfqf.cn
http://AGHtbWZu.kjfqf.cn
http://oK9JZGms.kjfqf.cn
http://YUJ5NBYE.kjfqf.cn
http://YKGhl1X4.kjfqf.cn
http://jTdFh79m.kjfqf.cn
http://Dac7LM0g.kjfqf.cn
http://bWbcXNOa.kjfqf.cn
http://dXCrGp4W.kjfqf.cn
http://882RKeWz.kjfqf.cn
http://8lVfROMw.kjfqf.cn
http://vTtlJ8q9.kjfqf.cn
http://BOT4zMLt.kjfqf.cn
http://Hw6GZVuA.kjfqf.cn
http://IpZ0mAJi.kjfqf.cn
http://bP6GQz4p.kjfqf.cn
http://www.dtcms.com/a/89649.html

相关文章:

  • 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)
  • Python Sanic面试题及参考答案
  • 东软鸿蒙C++开发面经
  • 网络华为HCIA+HCIP 防火墙
  • VLAN综合实验实验报告
  • git的进阶使用
  • Spring Boot JSON序列化深度管控:忽略指定字段+Jackson扩展策略破解双向实体循环引用问题
  • Linux -- 进程间通信(IPC)-- 进程间通信、管道、system V 共享内存、system V 消息队列、责任链模式 、system V 信号量
  • AI与数据的双向奔“赋”
  • 超融合服务器与普通服务器的具体区别
  • 226.翻转二叉树