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

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

Восстановить пароль Регистрация
 
A7X
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 15
13.11.2013, 00:36     Определить тип треугольника с заданными координатми #1
Здравствуйте! Помогите исправить программу:

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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
 
// Определить тип треугольника (прямо-, остро-, тупоугольный)с заданными координатми.
 
int main (){
    setlocale(0,"");
    double xA, xB, xC, yA, yB, yC, AB, BC, AC, alfaACB, alfaBAC, alfaABC;
    double eps = 0,01;
    scanf_s("%lf%lf%lf%lf%lf%lf", &xA, &yA, &xB, &yB, &xC, &yC);
 
    AB = sqrt(pow((xB - xA),2) + pow((yB - yA),2));
    BC = sqrt(pow((xC - xB),2) + pow((yC - yB),2));
    AC = sqrt(pow((xC - xA),2) + pow((yC - yA),2));
 
    bool flag = 0;
 
    while (flag == 0){
        alfaACB = (acos( - AB*AB + AC*AC + BC*BC ) / (2.0 * AC * BC)) * 180.0 / acos(-1.0);
 
        
        if ((alfaACB - 90.0) <= eps ){
            printf("Прямоугольный");
            flag = 1;
            break;
        }
        else if (alfaACB > (90.0 + eps)){
            printf("Тупоугольный");
            flag = 1;
            break;
        }
 
        alfaBAC = (acos( - BC*BC + AB*AB + AC*AC ) /( 2.0 * AB * AC)) * 180.0 / acos(-1.0);
        if ((alfaACB - 90.0) <= eps ){
            printf("Прямоугольный");
            flag = 1;
            break;
        }
        else if (alfaBAC > (90.0 + eps)){
            printf("Тупоугольный");
            flag = 1;
            break;
        }
 
        alfaABC = (acos( - AC*AC + AB*AB + BC*BC ) /( 2.0 * AB * BC)) * 180.0 / acos(-1.0);
        if ((alfaACB - 90.0) <= eps ){
            printf("Прямоугольный");
            flag = 1;
            break;
        }
        else if (alfaABC > (90.0 + eps)){
            printf("Тупоугольный");
            flag = 1;
            break;
        }
    }
    if (flag == 0) 
        printf("Остроугольный");
 
    _getch();
    return 0;
    }
При запуске - бесконечный цикл...
eps - точность.
Спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 00:36     Определить тип треугольника с заданными координатми
Посмотрите здесь:

C++ Определить, лежит ли точка с заданными координатами внутри треугольника
C++ Определить тип треугольника.
C++ Даны длины сторон треугольника, определить тип этого треугольника
C++ Даны длины трех отрезков A, B, C. Определить возможность построения треугольника и его тип
Определить функцию вычисления площади треугольника по трем его сторонами, заданными действительными числами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zvoronz
 Аватар для zvoronz
270 / 237 / 21
Регистрация: 29.05.2012
Сообщений: 889
13.11.2013, 01:12     Определить тип треугольника с заданными координатми #2
Зачем тут вообще цикл? И чего вобще пляшите с углом если существует вот такая зависимость:
Если b2 + c2 - a2 > 0, угол α — острый
Если b2 + c2 - a2 = 0, угол α — прямой
Если b2 + c2 - a2 < 0, угол α — тупой
NikitaQ
5 / 5 / 1
Регистрация: 10.09.2013
Сообщений: 51
13.11.2013, 01:13     Определить тип треугольника с заданными координатми #3
acos( - AB*AB + AC*AC + BC*BC )

arccos(x)
-1<=x<=1

Вы ошиблись в формуле
A7X
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 15
13.11.2013, 01:36  [ТС]     Определить тип треугольника с заданными координатми #4
Спасибо))Все, оказывается, так просто
Yandex
Объявления
13.11.2013, 01:36     Определить тип треугольника с заданными координатми
Ответ Создать тему
Опции темы

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