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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2018, 15:04   #1
kachunga
 
Регистрация: 26.01.2018
Сообщений: 5
По умолчанию Не совпадают значения при нахождении синуса

sin.jpg

Код:
int main()
{
	setlocale(LC_ALL,"Russian");
	int n = 100, sign = 1;
	double x = 1, eps = 0.001;
	double res = 0, q = 1, k = 1;
	while (fabs(q) > eps)
	{
		res += q;
		q = -sign*x*x / (2.*k + 2.0) / (2.0*k + 3.0);
		k++;
	}
	cout << "Полученное значение = " << setprecision(2) << fixed << res << endl;
	cout << "Контрольное значение = " << setprecision(2) << fixed << sin( x) << endl;
	system("pause");
    return 0;
}
В итоге у меня
Полученное значение =0.88
Контрольное значение = 0.84
kachunga вне форума Ответить с цитированием
Старый 31.01.2018, 16:00   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

попробуйте так:
Код:
	int n = 0, sign = 1;
	double x = 1, eps = 0.001;
	double res = 0, q=x, zm = 1;
	while (fabs(q) > eps)
	{
		res += sign*q;
		sign *= -1;
		n++;
		q = q*x*x /((2.0*n)*(2.0*n+1));
	}
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2018, 09:57   #3
kachunga
 
Регистрация: 26.01.2018
Сообщений: 5
По умолчанию

Спасибо,помогло.
kachunga вне форума Ответить с цитированием
Старый 01.02.2018, 10:02   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

пожалуйста.

p.s.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Код:
zm = 1;
эта переменная лишняя (я хотел в ней отдельно считать знаменатель дроби, но потом обошёлся без неё). Лучше её выкинуть из кода.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2018, 10:12   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

И sign убрать
Код:
		res += q;
		n++;
		q = -q*x*x /((2.0*n)*(2.0*n+1));
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не совпадают значения при нахождении гиперболического синуса kachunga Visual C++ 3 21.02.2018 11:42
одномерный массив. найти номера тех элементов массива, значения которых совпадают с числом 12 (Delphi) Daniyar22 Помощь студентам 6 20.05.2014 12:54
Копирование строк при нахождении нужного слова ma7ter Microsoft Office Excel 1 26.08.2013 08:51
написал программу, а значения не совпадают Наралм Общие вопросы C/C++ 4 14.12.2010 20:57
при нахождении символа перенос на новую строку MixanM Общие вопросы Delphi 11 09.06.2009 09:15