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

Определить координаты вершин прямоугольного треугольника - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнение и замена символов http://www.cyberforum.ru/cpp-beginners/thread751778.html
У меня есть файл с которого я считываю информацию массив. Если встречается определенный символ то мне нужно заменить его на другой. И самой главное мне нужно уже обработанный текст со всеми заменами...
C++ Определить общее количество осадков за этот год Занести из файла в массив сведения о количестве осадков, выпавших за каждый из 12 месяцев одного года. Определить общее количество осадков за этот год, среднемесячное количество осадков, количество... http://www.cyberforum.ru/cpp-beginners/thread751771.html
Ввести размер массива с клавиатуры и передать этот размер в конструктор C++
Я создал массив объектов. И я хочу ввести размер этого массива с клавиатуры, и передать этот размер в конструктор, как мне это сделать? #include <iostream> #include <conio.h> using namespace...
Объяснить алгоритм просто перебора C++
доброго времени суток! мой вопрос, наверное, покажется Вам очень глупым, но очень нужна ваша помощь! задачка не сложная:У Вас есть N камней с массами W1, W2 , … WN. Требуется разложить камни на 2...
C++ Написать программу, выводящую сумму и разность двух введенных чисел http://www.cyberforum.ru/cpp-beginners/thread751750.html
Написать программу, выводящую сумму и разность двух введенных чисел. Основная программа запрашивает два числа и передает их в функцию. Функция реализует вычисления и вывод на экран.Написать программу...
C++ Функция (удаление элементов вектора, равных переданному значению) Здравствуйте товарищи и С Новым Годом!!! Большую часть задания сделал, нужно еще кое что дополнить, все никак не соображу. Вообщем мне нужно, чтобы "Filter" удалял элементы вектора равные переданному... подробнее

Показать сообщение отдельно
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
03.01.2013, 19:21
я ее чисто для тестов сделал, врятли ее можно будет вам показывать и тут ошибки появились, щас буду отлаживать

Добавлено через 1 час 23 минуты
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
#include <iostream>
#include <windows.h>
#include "math.h"
 
using namespace std;
 
 
struct point{
    double x;
    double y;
};
 
double lenght(double x1,double y1,double x2,double y2){
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
 // по теореме косинусов
double getAlpha(point tria[3]){
    double a = lenght(tria[0].x,tria[0].y,tria[2].x,tria[2].y);
    double b = lenght(tria[2].x,tria[2].y,tria[1].x,tria[1].y);
    double c = lenght(tria[0].x,tria[0].y,tria[1].x,tria[1].y);
    // тут была ошибка a должна быть наименьшей стороной
    if (a > b) {
       double tmp = a;
       a = b;
       b = tmp;
    }
    if (a > c) {
       double tmp = a;
       a = c;
       c = tmp;
    }
    return acos((a*a - b*b - c*c)/(-2*b*c));
}
int main()
{
    point triangle[3];   //исходный треугольник
    point ortTriangle[3];//прямоугольный треугольник
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    for (int i = 0; i < 3; i++) {
        cout << " ВВедите координаты " << i+1 <<" Точки "<< endl;
        cin >> triangle[i].x >> triangle[i].y ;
    }
    int maxPoint[2] = { 0 , 1}; // предположим что наибольшее растояние между 1 и 2 точками
    double maxLenght = lenght(triangle[0].x,triangle[0].y,
                              triangle[1].x,triangle[1].y);
    for (int i = 0; i < 2; i++) {
        double tmpLenght = lenght(triangle[i].x,triangle[i].y,
                                  triangle[2].x,triangle[2].y);
        if (maxLenght < tmpLenght ) {
            maxLenght = tmpLenght;
            maxPoint[0] = i; maxPoint[1] = 2; // наибольшее между 3 и 1 либо 2
        }
    }
    int minPoint[2] = { 0 , 1};  //для построения третей точки нужно знать минимальные точки
    double minLenght = lenght(triangle[0].x,triangle[0].y,
                              triangle[1].x,triangle[1].y);
    for (int i = 0; i < 2; i++) {
        double tmpLenght = lenght(triangle[i].x,triangle[i].y,
                                  triangle[2].x,triangle[2].y);
        if (minLenght > tmpLenght ) {
            minLenght = tmpLenght;
            minPoint[0] = i; minPoint[1] = 2; // наибольшее между 3 и 1 либо 2
        }
    }
    int indexMinMax;//номер точки образующей и минимальную и максимальную стороны
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
           if (minPoint[i] == maxPoint[j]) {
              indexMinMax = minPoint[i];
           }
        }
    }
    Image1->Canvas->Pen->Color = clGreen;
    ortTriangle[0] = triangle[maxPoint[0]]; // координаты прямоугольного треугольника
    ortTriangle[1] = triangle[maxPoint[1]]; // по наибольшей стороне исходного
    ortTriangle[2].x = triangle[indexMinMax].x;
    ortTriangle[2].y = triangle[indexMinMax].y + tan(getAlpha(triangle))*maxLenght;
    for (int i = 0; i < 3; i++) {
        cout << "Координаты вершины " << i+1 <<" Точки "<< endl;
        cout << ortTriangle[i].x <<" "<< ortTriangle[i].y << endl;
    }
    system("pause");
    return 0;
}
еще остается открытым вопрос по поводу трейтьей точки, так как угол находит не всегда верно по знаку я еще посижу подумаю, ловите пока это ,осмыслите там ,может с углом сами придумаете

Добавлено через 5 минут
хотя щас нашел еще 1 треугольник который не получится, тут весь косяк с 3 точкой )

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