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

-1.#IND "Отрицательная неопределённость" - C++

Восстановить пароль Регистрация
 
zverek
2 / 1 / 0
Регистрация: 18.04.2012
Сообщений: 22
01.08.2013, 12:06     -1.#IND "Отрицательная неопределённость" #1
Здравствуйте.

1) Что такое "Отрицательная неопределённость"?
2) Почему она появляется на этих входных данных
18.716839 40.852752
66.147248 -4.083161
111.083161 43.347248
вот в этой "программе"?
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
#include <cstdio>
#include <iostream>
#include <cmath>
#define pi  3.14159265358979323846
 
struct point{
    double x;
    double y;};
 
double area_sq(point A, point B, point C)
{
    return (A.x*(B.y-C.y)+B.x*(C.y-A.y)+C.x*(A.y-B.y))*(A.x*(B.y-C.y)+B.x*(C.y-A.y)+C.x*(A.y-B.y))/4;
};
 
double length_sq(point A, point B)
{
    return (A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y);
};
 
int main()
{
    FILE *in, *out;
    in = freopen("input.txt", "r", stdin);
    out = freopen("output.txt", "w", stdout);
 
    point A, B, C;
 
    std::cin>>A.x>>A.y
            >>B.x>>B.y  
            >>C.x>>C.y;
 
    double  a=length_sq(A, B), 
            b=length_sq(B, C), 
            c=length_sq(C, A), 
            S=area_sq(A, B, C),
            R=(a*b*c)/(16*S);   
    
    printf("Стороны a, b, c и радиус (всё в квадрате):\n%f\n%f\n%f\n%f\n", a, b, c, R);
    
    double  angle_a=acos(1-a/(2*R))*180/pi, 
            angle_b=acos(1-b/(2*R))*180/pi,
            angle_d=acos(1-c/(2*R))*180/pi; 
 
        
    printf("Значения cos данных углов:\n%f\n%f\n%f\n", 1-a/(2*R), 1-b/(2*R), 1-c/(2*R));    
    printf("Cами углы в градусах\n%f\n%f\n%f", angle_a, angle_b, angle_d); 
 
    fclose(in); fclose(out);
}
На выходе имеем вот что:
Стороны a, b, c и радиус (всё в квадрате):
4268.879975
4268.879975
8537.759950
2134.439988
Значения cos данных углов:
-0.000000
-0.000000
-1.000000
Cами углы в градусах
90.000000
90.000000
-1.#IND00
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
01.08.2013, 12:16     -1.#IND "Отрицательная неопределённость" #2
zverek, где ты видел треугольник, у которого сумма углов > 180? А так, из-за погрешности наверняка acos считается для значения за пределами [-1, 1]
zverek
2 / 1 / 0
Регистрация: 18.04.2012
Сообщений: 22
01.08.2013, 12:21  [ТС]     -1.#IND "Отрицательная неопределённость" #3
nonedark2008, никто такой треугольник не увидит. Это углы "хорд" в описанной окружности данного треугольника (хордами являются стороны треугольника). А значение вычисляемое
1-c/(2*R)
равно ровно -1.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
01.08.2013, 12:26     -1.#IND "Отрицательная неопределённость" #4
Цитата Сообщение от zverek Посмотреть сообщение
равно ровно -1.
А ты уверен, что не -1.00000000000001 ????
zverek
2 / 1 / 0
Регистрация: 18.04.2012
Сообщений: 22
01.08.2013, 12:28  [ТС]     -1.#IND "Отрицательная неопределённость" #5
nonedark2008, проверил, не уверен.
-1.00000000000000040000
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
01.08.2013, 12:39     -1.#IND "Отрицательная неопределённость" #6
zverek, ну вот и проблема нашлась. Сделай проверку на границах, если значение входит в промежуток [-1 - eps; -1 + eps] то присваивай ему значение -1. Также с единицей.

Добавлено через 3 минуты
Хотя может не прокатить, делай значение чуть больше -1 и будет счастье.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2013, 12:39     -1.#IND "Отрицательная неопределённость"
Еще ссылки по теме:

Один и тот же результат "-1.#IND" C++
При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." C++
Наследование классов "Заявка", "Техническое задание", "Техническое предписание" C++

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

Или воспользуйтесь поиском по форуму:
zverek
2 / 1 / 0
Регистрация: 18.04.2012
Сообщений: 22
01.08.2013, 12:39  [ТС]     -1.#IND "Отрицательная неопределённость" #7
Спасибо) Второй вопрос разобрали. А первый?)
Yandex
Объявления
01.08.2013, 12:39     -1.#IND "Отрицательная неопределённость"
Ответ Создать тему
Опции темы

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