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

发布于:2025-03-26 ⋅ 阅读:(18) ⋅ 点赞:(0)

哔哩哔哩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;
}

运行结果

在这里插入图片描述