Создать класс окружностей на плоскости, описав в нём все необходимые свойства, подобрав им понятные имена и правильные типы данных. описать в классе конструктор, позволяющий при создании нового объекта явно задать все его свойства, а также конструктор, позволяющий задать свойства с клавиатуры. если это необходимо, то проверить допустимость значений свойств. создать в классе метод, вычисляющий площадь круга. создать в классе метод, вычисляющий расстояние между центрами окружностей. создать в классе метод, проверяющий, касаются ли окружности.

vlad1419 vlad1419    1   29.07.2019 04:30    30

Ответы
ХошиСимидзу ХошиСимидзу  03.10.2020 16:12
#include <iostream>
#include <cmath>
using namespace std;
class Circle
{
private:
    double x;
    double y;
    double r;
public:
    Circle();
    Circle(double xCo, double yCo, double rad);
    double area();
    double centre_dist(Circle & c);
    bool istouch(Circle & c);
};

Circle::Circle()
{
    cout << "Enter x coord: ";
    cin >> x;
    cout << "Enter y coord: ";
    cin >> y;
    cout << "Enter radius: ";
    while (cin >> r && r < 0)
    {
        cout << "Radius can't be negative\n";
        cout << "Enter radius: ";
    }
}

Circle::Circle(double xCo, double yCo, double rad) : x(xCo), y(yCo), r(rad)
{
    if (r < 0)
    {
        cout << "Radius can't be negative\n";
        cout << "Radius set to 0\n";
        r = 0;
    }
}

double Circle::area()
{
    return 3.1415926 * r * r;
}

double Circle::centre_dist(Circle & c)
{
    return sqrt((x - c.x) * (x - c.x) + (y - c.y) * (y - c.y));
}

bool Circle::istouch(Circle & c)
{
    return (this->centre_dist(c) <= r + c.r) ? true : false;
}

int main()
{
    Circle c1;
    Circle c2(0, 0, 5);
    cout << "area of c2: " << c2.area() << endl;
    cout << "centre distance: " << c2.centre_dist(c1) << endl;
    cout << "is touch: ";
    c2.istouch(c1) ? cout << "yes" : cout << "no";
    cout << endl;
    return 0;
}
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика