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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2014, 20:19   #1
Ligeros905
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 33
По умолчанию Вычислить с точностью eps>0 (С++)

Здравствуйте, помогите написать программу на С++. Суть такова: вычислить с точностью eps>0 y=1-x^2/2!+x^4!-...+(-1)^n*x^(2n)/(2n)!+...
Проверка y=cos(x)
Заранее спасибо
Ligeros905 вне форума Ответить с цитированием
Старый 25.03.2014, 22:16   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Посмотрите этот пример: Вычисление косинуса и экспоненты. Возможно, он Вам поможет.
Streletz вне форума Ответить с цитированием
Старый 25.03.2014, 22:22   #3
Ligeros905
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Посмотрите этот пример: Вычисление косинуса и экспоненты. Возможно, он Вам поможет.
Посмотрел, честно говоря немного не понимаю. Во-первых, в формуле имеются факториалы и надо как-то объявить компилятору, что это именно факториалы,а не отрицание. А дальше немного запутанно
Вот что я написал на начальном этапе
Код:
#include "stdafx.h"
#include "iostream"
#include "math.h"
#include "conio.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{   setlocale(LC_CTYPE,"Russian");
	double eps=0.001;
	int n;
	int y, x;

	cout<<"Введите n";
	cin>>n;
	  y=1-x^2/2!+x^4/4!-(-1)^n*x^(2n)/(2n)!;
	  cout<<y;
	  getch ();



	return 0;
}
Ligeros905 вне форума Ответить с цитированием
Старый 25.03.2014, 22:38   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://www.programmersforum.ru/showp...1&postcount=35
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2014, 22:39   #5
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
в формуле имеются факториалы и надо как-то объявить компилятору, что это именно факториалы,а не отрицание
В C++, в отличие от математики, нет оператора "факториал". Однако, вполне реально написать функцию для его вычисления.
В помощь:
Факториал в C++
Streletz вне форума Ответить с цитированием
Старый 26.03.2014, 09:57   #6
Ligeros905
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Очень похоже, попробую поколдовать с этим.
Ligeros905 вне форума Ответить с цитированием
Старый 26.03.2014, 20:25   #7
Ligeros905
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 33
По умолчанию

Спасибо огромное, помогло, только вопрос с факториалом остался...
Код:
#include "stdafx.h"
#include "iostream"
#include "stdio.h"
#include "math.h"
#include "conio.h"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{   
	int factorial(int x) { 
    return !x ? 1 : x * factorial(x - 1);
}
void main() {
    int n;
    while( scanf("%d", &n) == 1)
      printf("%d\n", factorial (n));
}

	double eps = 0.001;
    double x, y1, y2;
	double n=0;
	cout<<"Enter x\n";
	cin>>x;
	y1=cos(x);
	do
	{
		y2=(pow(-1,n)*pow(x,2*n))/(2*n);
		n++;

	}
   while (y2-y1>eps);
   
   cout<<y2;
   getch ();

	return 0;
}
После объявление факториала компилятор ругается на фигурную скобку и требует для нее точки с запятой
Ligeros905 вне форума Ответить с цитированием
Старый 26.03.2014, 20:40   #8
Disite
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 13
По умолчанию

Код:
// 1.cpp : main project file.

#include "stdafx.h"
#include "iostream"
#include "math.h"
#include "conio.h"

using namespace std;
unsigned long long fact(int n)
{
int k=1;
for(int i=2;i<=n;i++)
{
k=k*i;
}
return k;
}
double mod(double n)
{
if(n>0) return n;
else return n*(-1);
}
int main()
{
double eps;
double y1;
double y;
double x;
double f;
double i;
y=0;i=1;f=1;
cout«"vvedite x:";
cin»x;
cout«"vvedite eps:";
cin»eps;
while (mod(y)>eps);
{
f=pow(-1,i)*pow(x,2*i)/fact(2*i);
y+=f;
i++;
}
cout«y«"\n";
y1=cos(x);
cout«y1;
cin.get();
cin.ignore();
return 0;
}
вот моя программа,но не уверен правильная или нет
Disite вне форума Ответить с цитированием
Старый 26.03.2014, 20:43   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
int _tmain(int argc, _TCHAR* argv[])
{
int factorial(int x) {
return !x ? 1 : x * factorial(x - 1);
}
void main() {
Что это?? О_о
Зачем два main да еще и в разных стилях?
И между прочим функция factorial действительно не закрыта фигурной скобой.
Код:
int factorial(int x) { 
    return !x ? 1 : x * factorial(x - 1);
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.03.2014, 21:05   #10
Ligeros905
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что это?? О_о
Зачем два main да еще и в разных стилях?
И между прочим функция factorial действительно не закрыта фигурной скобой.
Код:
int factorial(int x) { 
    return !x ? 1 : x * factorial(x - 1);
}
Я нашел эту ф-июи полностью ее скопировал в main
Код:

int factorial(int x) { 
    return !x ? 1 : x * factorial(x - 1);
}
void main() {
    int n;
    while( scanf("%d", &n) == 1)
      printf("%d\n", factorial (n));
}
Ligeros905 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не используя стандартные функции, вычислить с точностью EPS>0 AZelensky Помощь студентам 10 17.11.2013 12:20
сумма последовательности с точностью eps maman Помощь студентам 0 20.11.2011 16:05
вычислить с точностью eps ангелочик Помощь студентам 4 16.11.2010 21:48
Не используя стандартные функции (за исключением abs), вычислить с точностью до eps>0: GHOST_DOG Помощь студентам 2 12.12.2008 05:58