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

Найти координаты основания высоты. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Никак не могу разобраться с конструктором. http://www.cyberforum.ru/cpp-beginners/thread170140.html
Добрый день. Недавно стал изучать C++. Уже 2 день пытаюсь понять суть конструктора, но не могу. Код который присутствует в книжках, не работает в компиляторах visual C++ 10 и DEV-C++ 4.9.9.2. :( например вот на такой код компилятор говорит: функция член локального класса не имеет тела и подсвечивает строку где у меня конструктор. Хотя в книжках показываются такие примеры class...
C++ Оператор условия в C++ Не как не могу написать программу по данной задаче(вложение) http://www.cyberforum.ru/cpp-beginners/thread170127.html
Найти количество элементов матрицы, значения которых не превышают по абсолютной величине Х C++
1) Дана матрица О (2,3) Найти кол-во элементов, значения которых не превышают по абсолютной величине Х. Если кол-во больше 3, то найти минимальный элемент. Пожалуйста последний раз прошу такой помощи:::это надо на языке с++ в среде Borland C++ bilder 6
Какие перспективы у C++ в будущем? C++
Какие перспективы у си++ в будущем? Я слышал, что сейчас лучше уже начинать учить си шарп или java?
C++ Цикл For с шагом 0.1, 0.01 и т.д. http://www.cyberforum.ru/cpp-beginners/thread170103.html
Помогите пожалуйста, как зделать цикл For с шагом 0.1 или 0.01. Например, задаю диапазон от 0 до 10 с шагом 0.1, получается 100 элементов, эти элементы являются размером массива и они должны быть заполнены как double
C++ Определить, принадлежит ли точка с координатами (x,y) заштрихованной части плоскости даны произвольные числа x,y.Определить, принадлежит ли точка с координатами (x,y) заштрихованной части плоскости(включая ее границы) рисунок на картинке вложенной помогите с кодом плз подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,663
29.09.2010, 19:18     Найти координаты основания высоты.
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
///////////////////////////////////////////////////////////////////////////////
//Треугольник задается координатами своих вершин на плоскости: 
//А(x1, y1), B(x2, y2), C(x3, y3). Найти длину и координаты основания высоты, 
//опущенной из вершины А на сторону ВС.
///////////////////////////////////////////////////////////////////////////////
#include <complex>
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
typedef double                 T_coord;
typedef std::complex<T_coord>  T_point;
///////////////////////////////////////////////////////////////////////////////
bool  vectors_are_equally_directed(const T_point& V1, const T_point& V2)
{    
    if(abs(V1) * abs(V2) == 0) return true;    
    return  arg(V1 / V2) == 0;     
}
///////////////////////////////////////////////////////////////////////////////
void get_altitude_AK
    (
        T_point   A, 
        T_point   B, 
        T_point   C, 
        T_point&  K, 
        T_coord&  altitude_len
    )
{
    //Так как основание K высоты AK лежит на прямой BC, то точку K можно 
    //представить в виде:
    //K = B + a * BC,                                                (1)
    //где a - действительное.
    //Тогда AK = K - A = B + a * BC - A = AB + a * BC.
    //Так как векторы AK и BC перпендикулярны, а при делении комплексных чисел
    //их аргументы (углы) вычитаются, то частное AK/BC или (AB + a * BC)/BC 
    //или (AB / BC + a) будет иметь аргумент, равный по модулю 90 градусов, т.е.
    //будет числом чисто мнимым. Следовательно (AB / BC).real() + a = 0, откуда
    // a = -(AB / BC).real().    
    //Тогда из (1) получим:    
    T_point  AB = B - A;
    T_point  BC = C - B;
    K = B - (AB/BC).real() * BC;
    T_point  AK = K - A;
    altitude_len = abs(AK);
}
///////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите координаты вершин треугольника: "
              << std::endl; 
 
    T_coord  Ax;
    std::cout << "Ax = ";
    std::cin >> Ax;
    T_coord  Ay;
    std::cout << "Ay = ";
    std::cin >> Ay;
    T_point A(Ax, Ay);
 
    T_point B;    
    do
    {
        T_coord  Bx;
        std::cout << std::endl
                  << "Bx = ";
        std::cin >> Bx;
        T_coord  By;
        std::cout << "By = ";
        std::cin >> By;
        B = T_point(Bx, By);        
    }while(B == A);    
 
    T_point  C;
    T_point  AB;
    T_point  AC;
    do
    {
        T_coord  Cx;
        std::cout << std::endl
                  << "Cx = ";
        std::cin >> Cx;
        T_coord  Cy;
        std::cout << "Cy = ";
        std::cin >> Cy;
        C = T_point(Cx, Cy);
 
        AB = B - A;
        AC = C - A;        
    }while(vectors_are_equally_directed(AB, AC)//Векторы AB и ± AC 
           || vectors_are_equally_directed(AB, -AC));//напривлены одинаково.
    T_point  K;
    T_coord  altitude_len = 0;
    get_altitude_AK(A, B, C, K, altitude_len);
    std::cout << "Высота AK треугольника имеет длину "
              << altitude_len
              << ", а точка K имееет координаты "
              << K
              << "."
              << std::endl;              
}
 
Текущее время: 12:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru