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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zverek
2 / 1 / 0
Регистрация: 18.04.2012
Сообщений: 22
#1

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

01.08.2013, 12:06. Просмотров 1110. Ответов 6
Метки нет (Все метки)

Здравствуйте.

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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2013, 12:06     -1.#IND "Отрицательная неопределённость"
Посмотрите здесь:

Функция возвращает "-1.#IND" C++
C++ Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004".
Необработанное исключение в "0x00414558" в "467.exe": 0xC0000005: Нарушение прав доступа при чтении "0xabababbb" C++
Необработанное исключение в "0x775e15de" в "laba3.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfdf9". C++
C++ Странный ответ ="-1.#IND" что такое?
Необработанное исключение в "0x778e15de" в "dir-3.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000" C++
C++ Необработанное исключение в "0x013f2b22" в "123.exe": 0xC0000005: Нарушение прав доступа при записи "0xfdfdfdfd"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
813 / 571 / 110
Регистрация: 28.07.2012
Сообщений: 1,518
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
813 / 571 / 110
Регистрация: 28.07.2012
Сообщений: 1,518
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
813 / 571 / 110
Регистрация: 28.07.2012
Сообщений: 1,518
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 "Отрицательная неопределённость"
Еще ссылки по теме:

C++ С++ консольное приложение win32, матерится на первое "pow" после "if", а на "system" говорит что неопределён.
Один и тот же результат "-1.#IND" C++
C++ В массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию
Написать функцию поиска человека по полю "фамилия" в массиве структур "Note" ("Персональная информация") C++
C++ Создать классы "Computer", "Software", "User" и реализовать взаимодействие объектов этих типов между собой

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

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

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