0 / 0 / 1
Регистрация: 19.01.2014
Сообщений: 9
1

"Точность вычислений" или "Элементарная погрешность"

19.01.2014, 14:35. Показов 662. Ответов 5
Метки нет (Все метки)

Всем привет!

Решаю задачку (Задача А - во вложениях), где даны координаты вершин треугольника, и нужно найти наибольший угол в нем.

Ну так вот.

Это код моей программы. Она работает правильно.

Но иногда возникает проблема с точностью вычислений:
например, когда вводишь координаты 0;0, 2;2, 4;4 (лежат на одной прямой), то вместо 180 программа выводит очень необычный ответ: 179.9999987926.

В чем дело, я так и не понял.
В интернете ничего дельного не нашел...

Возможно, это как-то связано с функциями sqrt() и acos().

Как вы думаете, в чем проблема?
Вложения
Тип файла: pdf problems.pdf (154.4 Кб, 7 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2014, 14:35
Ответы с готовыми решениями:

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло",...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую классы: − воин;...

Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел
Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует...

5
52 / 45 / 18
Регистрация: 06.01.2013
Сообщений: 626
19.01.2014, 14:42 2
это не проблема, а результат округлений в ответах, например 1/3 запишется как 0.3333 и при обратном действии вернет 0.9999
0
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
19.01.2014, 15:02 3
Цитата Сообщение от bes4etnov Посмотреть сообщение
то вместо 180 программа выводит очень необычный ответ: 179.9999987926
Нет ничего необычного, эти функции(тот же acos()) расчитываются до определенной точности, где-то до -15 степени.
0
0 / 0 / 1
Регистрация: 19.01.2014
Сообщений: 9
19.01.2014, 15:10  [ТС] 4
И как же быть?? Желательно, чтобы программа выводила правильный ответ)

Может быть есть какой-нибудь способ??
0
52 / 45 / 18
Регистрация: 06.01.2013
Сообщений: 626
19.01.2014, 15:13 5
округляйте до нужного знака
0
0 / 0 / 1
Регистрация: 19.01.2014
Сообщений: 9
19.01.2014, 15:26  [ТС] 6
Хех) В данной задаче точность равна 10^-8. То есть ответ программы считается неверным))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2014, 15:26
Помогаю со студенческими работами здесь

Введите предложение, в данной строке нужно заменить все слова "погрешность" на "ошибка"
Введите предложение, в данной строке нужно заменить все слова "погрешность" на "ошибка".

Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой или одним из знаков "+", "-", "*".
Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой...

Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" или "Воскресенье"
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из...

Необходимо между каждой парой цифр поставить знак "<", ">" или "="
Дана строка, состоящая из цифр. Необходимо между каждой парой цифр поставить знак &quot;&lt;&quot;, &quot;&gt;&quot; или &quot;=&quot;....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru