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

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

Войти
Регистрация
Восстановить пароль
 
bes4etnov
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 9
#1

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

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

Всем привет!

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

Ну так вот.

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

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

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

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

Как вы думаете, в чем проблема?
0
Вложения
Тип файла: pdf problems.pdf (154.4 Кб, 5 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2014, 14:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос "Точность вычислений" или "Элементарная погрешность" (C++):

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

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

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

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

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

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

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

Может быть есть какой-нибудь способ??
0
korep
52 / 45 / 9
Регистрация: 06.01.2013
Сообщений: 597
19.01.2014, 15:13 #5
округляйте до нужного знака
0
bes4etnov
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 9
19.01.2014, 15:26  [ТС] #6
Хех) В данной задаче точность равна 10^-8. То есть ответ программы считается неверным))
0
19.01.2014, 15:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2014, 15:26
Привет! Вот еще темы с ответами:

Определить, какая из точек "В" или "С" расположены ближе к точке "А". - C++
На оси Ох расположены 3 точки А, В и С. Определить, какая из точек "В" или "С" расположены ближе к точке "А". Предусмотреть вариант...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс "вентилятор" содержащий в себе классы:...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...


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

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

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