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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2013, 17:24   #1
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
Вопрос (Cи++) Вычисление суммы ряда

Всем привет! Требуется помощь! Нужно решить задачку, вычислить сумму ряда, с помощью цикла for. И вроде бы разобрался как работает данный цикл, а задачку решить не получается. Текст задания:


Hе используя стандаpтные функции (за исключением abs ), вычислить сумму следующего pяда с заданной точностью Е > 0 ( Е, х, а - вещественные числа вводятся с клавиатуры): Точность выводимого результата 6 знаков.
Uefa вне форума Ответить с цитированием
Старый 25.08.2013, 17:26   #2
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию

Вот что я наколдовал:

Код:
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "math.h"
#include "iostream"
using namespace std;


int main(int argc, char* argv[])
{
	setlocale(0, "");
    
	int i, n, x;
	float sum=0, //сумма ряда
		k;       //очередной член ряда
	cin >> n;
	cin >> x;
	k=1;
	for (i=1; i<=n; i++)
	{
		k=k*x*(-x)/(2*i);
        sum=sum+k;
	}
    cout << sum;



system ("pause");
}
В числите должно правильно высчитывать, а вот как запихнуть факториал (2n)! в знаменатель, никак не могу понять.
Uefa вне форума Ответить с цитированием
Старый 25.08.2013, 22:53   #3
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Код:
for (i=1; i<=n; i++)
	{
		k=(k*x*(-x))/((2*i) * (2 * i - 1));
        sum=sum+k;
	}
p.s. в сумме вашей не будет "нулевого" элемента равного "1"
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 25.08.2013 в 22:56.
VIK_aka_TOR вне форума Ответить с цитированием
Старый 26.08.2013, 13:19   #4
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию

Вот что получилось:
Код:
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "math.h"
#include "iostream"
using namespace std;


int main(int argc, char* argv[])
{
	setlocale(0, "");
    
    int i, n, x;
	float sum=0, //сумма ряда
		k;       //очередной член ряда
	cin >> n;
	cin >> x;
	k=1;
	for (i=1; i<=n; i++)
	{
		k=(k*x*(-x))/((2*i) * (2 * i - 1));
        sum=sum+k;

	}
    cout << 1+sum;



system ("pause");
}
Смущает строчка "с заданной точностью Е > 0", как отразить это в программе?
Uefa вне форума Ответить с цитированием
Старый 26.08.2013, 13:39   #5
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

отражается следующим образом:
- вводится с клавы "Е" - точность измерения
- будет применяться цикл с неизвестным количеством итераций (while или do while), в условии на завершение которого будет условие на сравнение, мол если последнее "k" меньше "E", то пора закругляться
Код:
	cin >> e;
        sum = 1; // советую сразу сумму сделать равной единицу, будет красивее нежели делать +1 в самом cout
        k = 1;
        i = 1;
        while  (fabsf(k) > e) // fabsf - возвращает модуль числа типа float, если модуль не брать, цикл остановится при первом же домнажении на -1
	{
	  k=(k*x*(-x))/((2*i) * (2 * i - 1));
          sum=sum+k;
          i++; 
	}
p.s. нужно подключить #include <math.h> для использования fabsf


p.p.s. можно и поменять кое что, не прибегая к модулю
Код:
	cin >> e;
        sum = 1; // советую сразу сумму сделать равной единице, будет красивее нежели делать +1 в самом cout
        k = 1;
        i = 1;
        while  (k > e)
	{
	  k=(k*x*x)/((2*i) * (2 * i - 1));
          if (i % 2 == 1)  // если нечетное место (не учитывая первой единицы)
             sum = sum - k; // то якобы домножено на -1 и все пучком
          else
             sum=sum+k; // а если четно, то четно)
          i++; 
	}
p.p.s. можно записывать sum = sum + k как sum += k; // так более "сишно" получается)
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 28.08.2013, 16:39   #6
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию

Цитата:
Сообщение от VIK_aka_TOR Посмотреть сообщение
отражается следующим образом:
- вводится с клавы "Е" - точность измерения
- будет применяться цикл с неизвестным количеством итераций (while или do while), в условии на завершение которого будет условие на сравнение, мол если последнее "k" меньше "E", то пора закругляться
Код:
	cin >> e;
        sum = 1; // советую сразу сумму сделать равной единицу, будет красивее нежели делать +1 в самом cout
        k = 1;
        i = 1;
        while  (fabsf(k) > e) // fabsf - возвращает модуль числа типа float, если модуль не брать, цикл остановится при первом же домнажении на -1
	{
	  k=(k*x*(-x))/((2*i) * (2 * i - 1));
          sum=sum+k;
          i++; 
	}
p.s. нужно подключить #include <math.h> для использования fabsf


p.p.s. можно и поменять кое что, не прибегая к модулю
Код:
	cin >> e;
        sum = 1; // советую сразу сумму сделать равной единице, будет красивее нежели делать +1 в самом cout
        k = 1;
        i = 1;
        while  (k > e)
	{
	  k=(k*x*x)/((2*i) * (2 * i - 1));
          if (i % 2 == 1)  // если нечетное место (не учитывая первой единицы)
             sum = sum - k; // то якобы домножено на -1 и все пучком
          else
             sum=sum+k; // а если четно, то четно)
          i++; 
	}
p.p.s. можно записывать sum = sum + k как sum += k; // так более "сишно" получается)
ответьте в аське
Uefa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление суммы ряда aperdt Паскаль, Turbo Pascal, PascalABC.NET 2 03.10.2012 19:14
Вычисление суммы ряда Shark_snt Паскаль, Turbo Pascal, PascalABC.NET 0 28.12.2011 19:35
вычисление суммы ряда druger Помощь студентам 1 30.09.2011 18:58
VB Вычисление суммы ряда LenZab Помощь студентам 0 20.05.2011 23:18
Вычисление суммы ряда 666Rayne666 Помощь студентам 3 25.12.2009 22:39