Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2022, 11:36   #1
Fasofam
Новичок
Джуниор
 
Регистрация: 19.12.2022
Сообщений: 1
Хорошо Вычисление синуса на СИ. Нужна помощь

Получил задание: вычислить синус по формуле. Программа считает правильно, но не совсем. Там где должно выводить 0 - выводят 0.
0003.., где 1 - 1.00003 и т.п.(если eps ближе к единице) Мне сказали, что в компьютере заложено так, что получается не точно, но дали задание исправить это любым способом. Я решил сделать проверку на точные градусы, потому что проблема только с ними, но сказали так не нужно: сказали исправить код не используя сравнение с числами.(на скриншоте код с сравнением, if (k= 100, и прочие лишние после неё само собой теперь нужно убрать, просто сейчас нет возможности отправить обычный код под исправление)
Ваши идеи?
Изображения
Тип файла: jpg attach.jpg (85.8 Кб, 4 просмотров)
Тип файла: jpg Og89MZhpW6c.jpg (38.8 Кб, 11 просмотров)
Fasofam вне форума Ответить с цитированием
Старый 19.12.2022, 11:52   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Код текстом. Тэги кода - не забываем. Синус +100500 раз уже писали. Ты что, готовый код не мог посмотреть?
Cuprum5 на форуме Ответить с цитированием
Старый 19.12.2022, 11:56   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Из градусов в радианы в другой программе будете переводить. Здесь подразумевается, что 1 >= x >= 0.
Cuprum5 на форуме Ответить с цитированием
Старый 19.12.2022, 11:58   #4
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Код бредовый. За базу берете x и домножаете этот промежуточный член на:
Код:
//вначале
double an = x;
int nf = 1;

//в цикле
n += 2;
an *= -x*x/((n-1)*n);

Последний раз редактировалось Cuprum5; 19.12.2022 в 12:01.
Cuprum5 на форуме Ответить с цитированием
Старый 19.12.2022, 12:11   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цитата:
Сообщение от Fasofam Посмотреть сообщение
Мне сказали, что в компьютере заложено так, что получается не точно, но дали задание исправить это любым способом.
Получишь Нобелевскую премию Если при конечной длине машинного слова в компе точное значение невозможно получить принципиально, а ты его всё-таки получишь любым способом.

Последний раз редактировалось digitalis; 19.12.2022 в 12:14.
digitalis вне форума Ответить с цитированием
Старый 19.12.2022, 12:55   #6
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Синус вычисляется вот так, только я бы там в знаменатель все запихнул. Переменных поменьше надо.
http://studlab.com/news/vychislenie_...2013-07-09-807
Cuprum5 на форуме Ответить с цитированием
Старый 19.12.2022, 16:37   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

... и не "получить любым способом точное значение", не обеспечиваемое процессором компа, а с отклонением, по абс. величине не пренвышающем ε
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление гиперболического синуса(С++) viktor01 Помощь студентам 0 17.11.2012 19:23
Вычисление значений функции интегрального синуса RIOs Помощь студентам 1 10.06.2012 09:47
Вычисление синуса разложением в ряд jennya Общие вопросы C/C++ 4 16.10.2010 22:33
Вычисление синуса (надо подправить интервалы) PPPPPP Помощь студентам 2 16.04.2010 17:45
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24