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

Кто знает решение? Тема Классы - C++

Восстановить пароль Регистрация
 
DennyD
0 / 0 / 0
Регистрация: 08.01.2011
Сообщений: 6
16.05.2011, 01:09     Кто знает решение? Тема Классы #1
Класс Прямая
Члены класса Координаты двух точек (x1,y1) и (x2,y2)
Методы Конструктор, метод вывода уравнения прямой
Операторы перегрузки Проверка параллельности 2х прямых ( ), определение угла между 2-мя прямыми(%)
Исходные данные Прямая АВ: A(xa,ya), B(xb,yb) Прямая CD:C(xc,yc), D(xd,yd)
Результаты Вывести уравнения прямых линий. Если прямые не параллельны, то найти и вывести угол между ними

PS спасибо за помощь!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2011, 01:09     Кто знает решение? Тема Классы
Посмотрите здесь:

тема классы C++
C++ кто знает как?
кто знает строки? C++
C++ кто знает решение напишите
C++ тема структуры(классы)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pigah
 Аватар для pigah
12 / 12 / 2
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
16.05.2011, 02:34     Кто знает решение? Тема Классы #2
Никто не будет сидеть и парится за тебя и писать код сам садись и пиши будут ошибки помогут
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
16.05.2011, 16:54     Кто знает решение? Тема Классы #3
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
123
124
125
126
127
128
#include <iostream>
#include <cmath>
 
class Straight
{
    struct Point
    {
        double m_x;
        double m_y;
 
        Point(double x, double y):
        m_x(x),
        m_y(y)
        {
        }
    };
 
    void m_get_eq_coeffs(double &A, double &B, double &C) const
    {
        A = m_S2.m_y - m_S1.m_y;
        B = m_S1.m_x - m_S2.m_x;
        C = m_S1.m_y * (m_S2.m_x - m_S1.m_x) - m_S1.m_x * (m_S2.m_y - m_S1.m_y);
    }
 
public:
    Straight(double x1 = 0, double y1 = 0, double x2 = 1, double y2 = 1):
    m_S1(x1, y1),
    m_S2(x2, y2)
    {
    }
 
    void print_equation() const
    {
        double A, B, C;
 
        m_get_eq_coeffs(A, B, C);
 
        if (B == 0)
            std::cout << "x = " << -C / A;
        else
        {
            double k = -A / B;
            double b = -C / B;
 
            std::cout << "y = ";
 
            if (A == 0)
                std::cout << b;
            else
            {
                if (k == -1)
                    std::cout << "-";
                else
                {
                    if (k != 1)
                        std::cout << k;
                }
 
                std::cout << "x";
 
                if (b != 0)
                    std::cout << (b < 0 ? " - " : " + ") << fabs(b);
            }
        }
 
        std::cout << std::endl;
    }
 
    double operator%(const Straight &right) const
    {
        double A1, B1, C1;
        double A2, B2, C2;
 
        m_get_eq_coeffs(A1, B1, C1);
        right.m_get_eq_coeffs(A2, B2, C2);
 
        double k1 = -A1 / B1;
        double k2 = -A2 / B2;
 
        const double Pi = 3.14159265358979323;
 
        return 180 * atan(fabs((k2 - k1) / (1 + k1 * k2))) / Pi;
    }
 
    bool operator||(const Straight &right) const
    {
        return *this % right < 1E-9;
    }
 
private:
    Point m_S1;
    Point m_S2;
};
 
Straight input_straight();
 
int main()
{
    Straight s1, s2;
 
    s1 = input_straight();
    s2 = input_straight();
 
    s1.print_equation();
    s2.print_equation();
 
    if (!(s1 || s2))
        std::cout << "Angle: " << s1 % s2 << std::endl;
 
    return 0;
}
 
Straight input_straight()
{
    double x1, y1;
    double x2, y2;
 
    std::cout << "Enter x1: ";
    std::cin >> x1;
    std::cout << "Enter y1: ";
    std::cin >> y1;
    std::cout << "Enter x2: ";
    std::cin >> x2;
    std::cout << "Enter y2: ";
    std::cin >> y2;
 
    return Straight (x1, y1, x2, y2);
}
DennyD
0 / 0 / 0
Регистрация: 08.01.2011
Сообщений: 6
17.05.2011, 00:47  [ТС]     Кто знает решение? Тема Классы #4
Спасибо тебе великодушный Человек!!!!!
Yandex
Объявления
17.05.2011, 00:47     Кто знает решение? Тема Классы
Ответ Создать тему
Опции темы

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