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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2018, 08:30   #1
Andrei.Ch
 
Регистрация: 24.01.2018
Сообщений: 6
По умолчанию Написать программу для нахождения суммы ряда с заданной точностью

18) Найти сумму ряда с точностью E=10-4, общий член которого
an= n^3/(3*n-3)!
вот условие

Проверьте пожалуйста правильно нет делаю!!!

Код:
#include <cstdlib>
#include <iostream>
#include <math.h>

using namespace std;

float fact(int f)
  {
    if(f < 0) 
        return 0; 
    if (f == 0)
        return 1; 
    else 
        return f * fact(f-1); 
   }

int main()
{
setlocale ( 0 , "");
cout << "Найти сумму ряда " << endl;
int n;
int f;
float S=0;
double as;
cin>>n;
     for (int i=1; i<=n; i++)
     {
       f=(3*n-3);     
       as=pow(i,3)/fact(f);
       S+=as;  
      }
cout << " Сумма ряда равна  " << S << endl;
system ("pause");

}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 02.02.2018 в 09:11.
Andrei.Ch вне форума Ответить с цитированием
Старый 02.02.2018, 09:21   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы используете цикл for ( до i<n, причём неправильно, ведь n не задано).
а где проверка на точность?
а тут нужен цикл while:
Код:
int i=0;
double as=1, S=0;
while ( as>=0.0001 )
{
  as=pow(i,3)/fact(3*i-3);
  S+=as;
  i++;
}
p.s. в таких задачах часто проще, удобнее и эффективней использовать рекуррентное соотношение
(это если следующий член ряда разделить на предыдущий и полученную формулу использовать как множитель
вида as = as * i / (..... ) );

Последний раз редактировалось Serge_Bliznykov; 02.02.2018 в 09:24.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.02.2018, 15:56   #3
Andrei.Ch
 
Регистрация: 24.01.2018
Сообщений: 6
По умолчанию

Должно получиться как то так
я правильно понял

Код:
int i=0;
double as=1, S=0, an=0;
while (as>=0.0001)
{
      an= pow(i,3)/(3*i-3);
      as=an*pow(i+1,3)*(3*i-3)/(3*pow(i,4));
      S+=as;
      i++;
      }
Andrei.Ch вне форума Ответить с цитированием
Старый 02.02.2018, 18:14   #4
Andrei.Ch
 
Регистрация: 24.01.2018
Сообщений: 6
По умолчанию

Все разобрался
спасибо за помощь
тему можно закрыть
Andrei.Ch вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа в паскале: Циклический вычислительный процесс. Вычисление суммы ряда с заданной точностью stas47 Помощь студентам 4 19.12.2013 14:04
Pascal ошибка при вычислении суммы ряда с заданной точностью RavenGuitarist Помощь студентам 4 23.08.2011 16:11
Составить графический алгоритм и программу для нахождения суммы ряда с заданной точностью ginfix Помощь студентам 1 30.03.2011 23:39
нахождения суммы ряда с заданной точностью E pinch000 Общие вопросы C/C++ 1 06.11.2009 13:03