Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dracubin
Сообщений: n/a
#1

Создать класс для работы с окружностями - C++

04.12.2012, 00:38. Просмотров 540. Ответов 1
Метки нет (Все метки)

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

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include "stdafx.h"
#include <iostream.h>
#include <math.h>
#include <conio.h>
//using namespace std;
class Point
{
public:
    Point(int x_ = 0, int y_ = 0) : x(x_), y(y_) {}
    ~Point() {}
private:
    int x;
    int y;
};
 
class Circles : public Point
{
public:
    Circle(int x = 0, int y = 0, int R = 0) : Point(x, y), R(R) {}
    ~Circle() {}
private:
    int R;
};
 
class circle{
private:
    point A,B,C,D;
    double radius(point A, point O);
    point centre(point A, point B, point C, point D);
public:
    void intersection(circles O1, circles O2);
    void print(circles O);
    void input();
};
/*struct point 
{
    double x;
    double y;
}
struct circles
{
    point O;
    double r;
}*/
 
point circle::centre(point A, point B, point C, point D)
{
    point O;
    O.x = (A.x + B.x + C.x+ D.x)/4;
    O.y = (A.y + B.y + C.y+ D.y)/4;
    return O;
}
 
double circle::radius(point A, point O)
{
    return  sqrt(((A.x - O.x)*(A.x - O.x) + (A.y -O.y)*(A.y - O.y))/2);
}
 
void circle::intersection(circles O1, circles O2)
{
    double l= radius(O1.O,O2.O)*sprt(2);
    if ((abs(O1.r-O2.r)<=l) && (l<=(O1.r + O2.r)))
        cout<<"two circles intersect"<<endl;
    else 
        cout<<"two circles don't intersect"<<endl;
}
void circle::input()
{
    cout<<"point A: "<<endl;
    cin>>A.x;
    cin>>A.y;
    A={A.x,A.y};
    cout<<"point B: "<<endl;
    cin>>B.x;
    cin>>B.y;
    B={B.x,B.y};
    cout<<"point C: "<<endl;
    cin>>C.x;
    cin>>C.y;
    C={C.x,C.y};
    cout<<"point D: "<<endl;
    cin>>D.x;
    cin>>D.y;
    D={D.x,D.y};
 
}
 
void circle::print( circles O)
{
    cout<<"coordinates of the  circle's center: ("<<O.O.x<<",<<O.O.y<<")"<<endl;
    cout<<"radius of the circle: "<<O.r<<endl;
}
 
void main()
{
    cirles I1,I2;
    point O1,02;
    double r1,r2;
    circle vt;
    vt.input();
    O1= vt.centre();
    r1= vt.radius(A,O1);
    I1= {O1,r1};
    cout<<"enter the circle"<<endl;
    cin>>O2.x;
    cin>>O2.y;
    cin>>r2;
    I2={O2,r2};
    vt.print(I1);
    vt.intersection(I1,I2);
    getch();
}
Это первый раз я делаю класс и не понимаю как. Помогите мне, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2012, 00:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать класс для работы с окружностями (C++):

Класс: создать класс Fraction для работы с дробными числами - C++
Необходимо создать класс Fraction для работы с дробными числами. Число должно быть представлено двумя полями: целая часть – длинное целое...

Создать базовый класс - Array и производный класс - Money для работы денежной суммы - C++
ПОМОГИТЕ, ПОЖАЛУЙСТА, С ЗАДАЧЕЙ Создать базовый класс - Array и производный класс - Money для работы денежной суммы

Создать класс для работы с дробями - C++
МОЖНО ТОЛЬКО НЕ КИТАЙСКИМ КОДОМ(хочу разобраться,не понимаю).заранее благодарен! Реализуйте класс Дробь. Необходимо хранить числитель...

Создать класс для работы с массивами - C++
:resent: В с++ еще только плаваю и застряла на класах. Помогите плиз с решением, если не затруднит . Буду очень благодарна ! Для...

Создать класс для работы сo строками - C++
Создать класс для работы сo строками. Разработать элементы класса: a. Поля: * указатель на char - хранит адрес динамически выделенной...

Создать класс для работы с матрицами - C++
Нужно создать класс для работы с матрицами и предусмотреть функции: -добавления(+); -умножения двух матриц(*); -транспонирования...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Dracubin
Сообщений: n/a
06.12.2012, 21:54 #2
Моя работа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "stdafx.h"
#include <iostream.h>
#include <math.h>
#include <conio.h>
 
class circle
{
private:
    double m_x1,m_y1,m_x2,m_y2,m_x3,m_y3,m_x4,m_y4;
    double m_radius;
    bool m_k;
public:
    void create(double x1,double y1,double x2, double y2,
                 double x3, double y3,double x4, double y4);
    bool intersect(double x1,double y1,double x2, double y2,
                 double x3, double y3,double x4, double y4);
    void print(bool k);
};
void circle::create( double x1,double y1,double x2, double y2,
                 double x3, double y3,double x4, double y4)
{
                 m_x1 = x1;
    m_y1 = y2;
    m_x2 = x2;
    m_y2 = y2;
    m_x3 = x3;
    m_y3 = y3;
    m_x4 = x4;
    m_y4 = y4;
    m_radius = sqrt(((x1- (x1+x2+x3+x4)/4)*(x1- (x1+x2+x3+x4)/4)+(y1-(y1+y2+y3+y4)/4)*(y1-(y1+y2+y3+y4)/4))/2);
 
}
bool circle::intersect(double x1,double y1,double x2, double y2,
                 double x3, double y3,double x4, double y4)
{   
    double local_radius;
    local_radius = sqrt(((x1- (x1+x2+x3+x4)/4)*(x1- (x1+x2+x3+x4)/4)+(y1-(y1+y2+y3+y4)/4)*(y1-(y1+y2+y3+y4)/4))/2);
    double l=sqrt((((x1+x2+x3+x4)/4-(m_x1+m_x2+m_x3+m_x4)/4)*((x1+x2+x3+x4)/4-(m_x1+m_x2+m_x3+m_x4)/4)+
        ((y1+y2+y3+y4)/4-(m_y1+m_y2+m_y3+m_y4)/4)*((y1+y2+y3+y4)/4-(m_y1+m_y2+m_y3+m_y4)/4)));
    if((local_radius-m_radius)<l && (m_radius-local_radius)<l && l<local_radius+m_radius)
     return true;
     return false;
}
void circle::print(bool k)
{ cout<<"coordinates of the center: "<<(m_x1+m_x2+m_x3+m_x4)/4<<" "<<(m_y1+m_y2+m_y3+m_y4)/4<<endl;
  cout<<"radius of circle: "<<m_radius<<endl;
  if (k == true)
      cout<<"two circles intersect"<<endl;
  else cout<<"two circles don't intersect"<<endl;
}
void main()
{
    double x1,y1,x2,y2,x3,y3,x4,y4;
    bool a;
    circle test;
    cout<<"enter first square's top:"<<endl;
    cin>>x1;
    cin>>y1;
    cin>>x2;
    cin>>y2;
    cin>>x3;
    cin>>y3;
    cin>>x4;
    cin>>y4;
    test.create(x1,y1,x2,y2,x3,y3,x4,y4);
    cout<<"enter second square's top:"<<endl;
                cin>>x1;
    cin>>y1;
    cin>>x2;
    cin>>y2;
    cin>>x3;
    cin>>y3;
    cin>>x4;
    cin>>y4;
    a=test.intersect(x1,y1,x2,y2,x3,y3,x4,y4);
    test.print(a);
getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 21:54
Привет! Вот еще темы с ответами:

Создать класс для работы с матрицей - C++
создать класс для работы с матрицей согласно задания. Предусмотреть наличие функций конструктора и деструктора, ввода и вывода элементов...

Создать класс для работы с восьмеричными числами - C++
Создать класс Octal для работы с беззнаковыми целыми восьмеричными числами, используя для представления числа массив из 100 элементов типа...

Создать класс time для работы со временем - C++
на языке C++ создать класс ВРЕМЯ,разработав следующие элементы класса: •Поля с;(временной интервал,заданный в секундах) ...

Создать класс для работы с длинными числами - C++
Помогите, пожалуйста, сделать хотя бы один из нижеперечисленных вопросов. Нужно создать класс для работы с длинными числами(сложение,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru