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

Задание по ООП - C++

Восстановить пароль Регистрация
 
delete1991
 Аватар для delete1991
2 / 2 / 0
Регистрация: 05.02.2011
Сообщений: 82
09.04.2011, 00:25     Задание по ООП #1
Создать два класса: линия (Line, содержит параметры a и b) и круг (Circle, содержит координаты центра и радиус). Описать функцию, определяющую координаты точек пересечения, как дружественную.
Помогите кто чем сможет, заранее благодарен)

Добавлено через 10 минут
Вот есть исходник чужой, но я его не пойму как тут определяется пересечение линии с кругом
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
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
113
114
115
116
117
118
119
120
121
122
Cirlce.h
 
class Line;
 
class Circle{
private:
    double r;
    double x,y;
public:
    Circle(double _r=1,double _x=0,double _y=0);
    void Show_Cirlce();
 
    friend void Show_Coord(Line l,Circle c);
};
 
Circle.cpp
 
#include "Line.h"
#include "Circle.h"
#include <cmath>
 
Circle::Circle(double _r,double _x,double _y):r(_r),x(_x),y(_y){}
 
void Circle::Show_Cirlce()
{
    cout<<endl;
    cout<<"R = "<<r<<"\tx = "<<x<<"\ty = "<<y;
    cout<<endl;
    getch();
    return;
}
 
void Show_Coord(Line l,Circle c)
{
    double k=-l.b/l.a;
    double t=-k*l.a;
    double d=(pow((2*k*t-2*c.x-2*c.y*k),2)-(4+4*k*k)*(t*t-c.r*c.r+c.x*c.x+c.y*c.y-2*c.y*t));
    if (d<0)
    {
        cout<<endl<<"No points!";
        getch();
        return;
    }
    double x1=((-(2*k*t-2*c.x-2*c.y*k)-sqrt(d))/(2+2*k*k));
    double x2=((-(2*k*t-2*c.x-2*c.y*k)+sqrt(d))/(2+2*k*k));
    double y1,y2;
    if (x1==x2)
    {
        cout<<endl<<"One point! "<<endl<<"x = "<<x1<<"\ty = "<<k*x1+t;
    }
    else
    {
        y1=k*x1+t;
        y2=k*x2+t;
        cout<<endl<<"x1 = "<<x1<<" y1 = "<<y1<<endl<<"x2 = "<<x2<<" y2 = "<<y2;
    }
    getch();
}
 
Line.h
 
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class Circle;
 
class Line{
private:
    double a,b;
public:
    Line(double _a=1,double _b=1);
    void ShowLine();
 
    friend void Show_Coord(Line l,Circle c);
};
 
Line.cpp
 
#include "Line.h"
 
Line::Line(double _a,double _b)
{
    while ((!_a)&&(!_b))
    {
        cout<<"Parametri a i b ne ravni 0! Vvedite novie ";
        cin>>_a;
        cin>>_b;
    }
    a=_a;
    b=_b;
}
 
void Line::ShowLine()
{
    cout<<endl;
    cout<<"x/"<<a<<" + y/"<<b<<" = 1"<<endl;
    getch();
}
 
Main.cpp
 
#include "Line.h"
#include "Circle.h"
#include <cmath>
 
int main()
{
    Circle c(2,2,2);
    Line l(2,-2);
    c.Show_Cirlce();
    l.ShowLine();
    Show_Coord(l,c);
    Circle c2(2,2,2);
    Line l2(100,100);
    Show_Coord(l2,c2);
    Circle c3(sqrt((double)2),2,2);
    Line l3(-2,2);
    Show_Coord(l3,c3);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2011, 00:25     Задание по ООП
Посмотрите здесь:

Задание на массив и задание на матрицу. C++
C++ ООП
C++ ООП, разобрать задание.
ООП C++
C++ задание по ООП, классы, матрицы
C++ Расстолковать задание по ООП С++
C++ Не могу понять задание по "ООП"
ООП. Тестовое задание собеседования. C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 10:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru