C++ 百炼成钢20

题目56:

编写C++程序完成以下功能:
(1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;
(2)定义一个圆形类,其属性包括圆心和半径;
(3)创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。

//点类声明
#include<iostream>
#pragma once
//这句代码相当于#ifndef MyP   #define MyP     #endif这三句代码,都是为了防止重定义
//#ifndef MyP
//#define MyP
class MyPoint{
public:
    //初始化点
    void Init(int x0, int y0);
    //计算距离
    double calculationdistance(MyPoint &mp1);
private:
    int x;
    int y;
};
//
//#endif
//点类的实现
#include<iostream>
#include"MyPoint.h"

//初始化点
void MyPoint::Init(int x0, int y0){
    x = x0;
    y = y0;
}

double MyPoint::calculationdistance(MyPoint &mp1){
    double d =sqrt((x - mp1.x)*(x - mp1.x) + (y - mp1.y)*(y - mp1.y));
    return d;
}
//圆类声明
#pragma once

class MyCircle{
public:
    void Init(double x0, double y0, double r0);
    int jugdeintersect(MyCircle &mc1);
private:
    double x;
    double y;
    double r;
};
//圆类的实现
#include<iostream>
#include"MyCircle.h"

using namespace std;

void MyCircle::Init(double x0, double y0, double r0){
    x = x0;
    y = y0;
    r = r0;
}

int MyCircle::jugdeintersect(MyCircle &mc1){
    int ret = 0;
    double temp = 0.0, temp2=0.0;
    temp = sqrt((x - mc1.x)*(x - mc1.x) + (y - mc1.y)*(y - mc1.y));
    temp2 = r + mc1.r;
    if (temp>temp2)
    {
        //表示两圆不相交
        ret = 1;
    }
    return ret;
}
/*
编写C++程序完成以下功能:
(1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;
(2)定义一个圆形类,其属性包括圆心和半径;
(3)创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。
*/
#include<iostream>
#include"MyCircle.h"
#include"MyPoint.h"

using namespace std;

void main(){
    //定义两个点
    //MyPoint mp1, mp2;
    //mp1.Init(1, 1);
    //mp2.Init(1, 2);
    //printf("两点之间的距离%lf
", mp1.calculationdistance(mp2));
    //定义两个圆
    MyCircle c1, c2;
    c1.Init(1, 1, 1);
    c2.Init(1, 4, 1);
    if (c1.jugdeintersect(c2))
    {
        printf("两圆不相交
");
    }
    else{
        printf("两圆相交
");
    }
    system("pause");
}
原文地址:https://www.cnblogs.com/zhanggaofeng/p/5593331.html