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

news2025/3/29 12:57:54

哔哩哔哩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://www.coloradmin.cn/o/2322316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS-ArkUI Grip组件

我们在学习List的时候&#xff0c;已经捎带引入了Grid。讲解如下图所示&#xff1a; 也就是&#xff0c;如果一个表&#xff0c;长宽基本都是一致的&#xff0c;那么此时可以完全不用Grid也可以实现&#xff0c;并且&#xff0c;优先考虑的就是List。 如果List实现不了的情况下…

2025清华大学:DeepSeek教程全集(PDF+视频精讲,共10份).zip

一、资料列表 第一课&#xff1a;Deepseek基础入门 第二课&#xff1a;DeepSeek赋能职场 第三课&#xff1a;普通人如何抓住DeepSeek红利 第四课&#xff1a;让科研像聊天一样简单 第五课&#xff1a;DeepSeek与AI幻觉 第六课&#xff1a;基于DeepSeek的AI音乐词曲的创造法 第…

mac vim命令快捷键

目录 移动光标插入模式复制/粘贴删除搜索/替换退出 移动光标 快捷键说明0 / ^跳到行首&#xff0c;移动到光标所在行的"行首"$跳到行末&#xff0c;移动到光标所在行的"行尾"gg跳到文件第一行G移动到文章的最后[n]G跳到第n行w光标跳到下个字的开头e光标跳…

低代码配置式Web组态解析

低代码配置式Web组态技术通过可视化操作和预置组件库&#xff0c;大幅降低开发门槛&#xff0c;适用于工业控制、物联网监控、数据可视化等场景。以下是综合行业实践和产品特性的分析&#xff1a; ‌一、核心功能与优势‌ ‌可视化编辑与拖拽布局‌ 提供图形化编辑器&#xff0…

基于web的家政服务网站

内容摘要 由于互联网的使用&#xff0c;人们在管理、应用、服务等领域使用数据更加简洁、方便&#xff0c;大大提高了工作效率。互联网正逐渐融入我们的生活&#xff0c;影响和改变我们的生活。 家政服务管理系统是典型的信息管理系统&#xff08;MIS&#xff09;。其开发主要…

聚水潭数据集成到MySQL的最佳实践分享

聚水潭数据集成到MySQL的技术案例分享 在本次技术案例中&#xff0c;我们将探讨如何通过轻易云数据集成平台&#xff0c;将聚水潭的数据高效、可靠地集成到MySQL数据库中。具体的集成方案为“聚水潭-商品信息查询-->BI初本-商品信息表_copy”。该方案旨在实现从聚水潭获取商…

线性代数核心概念与NumPy科学计算实战全解析

前言 学习方法&#xff1a; 思维导图&#xff0c;梳理 多记忆&#xff0c;函数名和功能&#xff0c;参数 学会应用&#xff0c;不要钻牛角尖 一、浅解线性代数 1.1标量 标量是一个只有大小没有方向的量。在数学上&#xff0c;标量通常表示为一个普通的数字&#xff0c;如‌质量…

C#自定义曲线便器功能实现(简化版)

目录 一、曲线编辑器实现功能 二、实现方法说明 三、关键代码说明 1、绘制背景板和曲线 2、绘制坐标系面板 3、绘制曲线 四、工程下载连接 一、曲线编辑器实现功能 添加或者删除控制点&#xff0c;通过移动控制点来修改曲线形状 二、实现方法说明 1、坐标系系统&#x…

解锁U盘属性0字节困境,重获数据生机

在数字化浪潮中&#xff0c;U盘宛如一位忠诚的“数据信使”&#xff0c;频繁穿梭于各种设备之间&#xff0c;为我们存储和传输着重要信息。然而&#xff0c;当U盘突然显示属性为0字节时&#xff0c;就如同这位信使突然“失声”&#xff0c;让我们陷入了数据丢失的恐慌之中。U盘…

⭐算法OJ⭐二叉树的直径【树】(C++实现)Binary Tree Paths

543. Binary Tree Paths&#xff08;二叉树的直径&#xff09; Given the root of a binary tree, return the length of the diameter of the tree. The diameter of a binary tree is the length of the longest path between any two nodes in a tree. This path may or m…

字典树与01trie

字典树简介 当我们通过字典查一个字或单词的时候&#xff0c;我们会通过前缀或关键字的来快速定位一个字的位置&#xff0c;进行快速查找。 字典树就是类似字典中索引表的一种数据结构&#xff0c;能够帮助我们快速定位一个字符串的位置。 字典树是一种存储字符串的数据结构…

vue - [Vue warn]: Duplicate keys detected: ‘0‘. This may cause an update error.

问题描述&#xff1a; vue项目中&#xff0c;对表单数组赋值时&#xff0c;控制台抛出警告&#xff1a; 问题代码&#xff1a; 问题分析&#xff1a; 1、Vue 要求每个虚拟 DOM 节点必须有唯一的 key。该警告信息通常出现在使用v-for循环的场景中&#xff0c;多个同级节点使用…

各类神经网络学习:(三)RNN 循环神经网络(中集),同步多对多结构的详细解释

上一篇下一篇RNN&#xff08;上集&#xff09;RNN&#xff08;下集&#xff09; 同步多对多结构 1&#xff09;结构详解 ①图解&#xff1a; ②参数含义&#xff1a; x t x_t xt​ &#xff1a;表示每一个时刻的输入&#xff1b; o t o_t ot​ &#xff1a;表示每一个时刻的输…

UR5e机器人位姿

UR5e 作为一款 6 自由度协作机器人&#xff0c;其末端执行器的位姿&#xff08;位置与姿态的组合&#xff09;控制是实现精准操作的核心。在笛卡尔坐标系中&#xff0c;位姿通常用齐次变换矩阵表示&#xff0c;包含末端的三维位置&#xff08;x, y, z&#xff09;和三维姿态&am…

导入 Excel 规则批量修改或删除 PDF 文档内容

需要对 PDF 文档内容进行修改的时候&#xff0c;通常我们会需要借助一些专业的工具来帮我们完成。那我们如果需要修改的 PDF 文档较多的时候&#xff0c;有什么方法可以帮我们实现批量操作呢&#xff1f;今天这篇文章就给大家介绍一下当我们需要批量修改多个 PDF 文档的时候&am…

ISIS-1 ISIS概述

前面几章我们介绍了OSPF的基础工作原理以及怎样交互LSA形成LSDB链路状态数据库的 这一章我们来介绍另一个链路状态路由协议,ISIS路由协议 一、概述 ISIS(Intermediate System to Intermediate System,中间系统到中间系统)是由ISO(International Organization for Standardiza…

茱元游戏TV2.9.3 | 适配多设备的经典街机游戏集合

茱元游戏TV是一款专为TV端设计的游戏软件&#xff0c;同时适配手机、投影仪和车机等多种设备。尽管其兼容性一般&#xff0c;仅支持安卓9.0以上系统&#xff0c;但它提供了丰富的经典街机游戏资源&#xff0c;非常适合8090后怀旧游玩。注意&#xff0c;游戏需先下载才能玩&…

RTD2525BE《HDMI转EDP,DP转EDP》显示器芯片

一、产品概述 瑞昱RTD2525BE是一款专为高端显示设备设计的多接口转换芯片&#xff0c;支持HDMI 2.0与DisplayPort&#xff08;DP&#xff09;1.4双输入&#xff0c;并高效转换为嵌入式DisplayPort&#xff08;eDP&#xff09;输出。该芯片集成先进信号处理技术&#xff0c;支持…

SvelteKit 最新中文文档教程(10)—— 部署 Cloudflare Pages 和 Cloudflare Workers

前言 Svelte&#xff0c;一个语法简洁、入门容易&#xff0c;面向未来的前端框架。 从 Svelte 诞生之初&#xff0c;就备受开发者的喜爱&#xff0c;根据统计&#xff0c;从 2019 年到 2024 年&#xff0c;连续 6 年一直是开发者最感兴趣的前端框架 No.1&#xff1a; Svelte …

springboot使用阿里限流框架-sentinel

当前项目源码 控制台下载 启动bin中的看板服务&#xff1a;账号密码:sentinel/sentinel 官方文档地址 项目引入依赖 <!-- sentinel注解支持 --> <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-annotation-aspectj<…