Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Helfer
ЙожЪ
63 / 59 / 7
Регистрация: 23.10.2009
Сообщений: 652
#1

Вычислить сумму ряда - C++

04.03.2010, 22:13. Просмотров 727. Ответов 3
Метки нет (Все метки)

Задание: Вычислить сумму ряда. Вычисление вести до тех пор, пока абсолютная величина разницы между двумя соседними членами ряда |Un+1-Un|не превышает некоторой величины . (10^-3>E>10^-4). Значение переменных выбрать самостоятельно.
1-x+x^2-x^3+...+(-1)^(n-1) * x^(n-1)...

Вот мои каракули...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
main()
{
double u1,e; double s=1, i=1, u2=0;
 cout<<"X-> "; cin>>u1;
 cout<<"E-> "; cin>>e;
   while (abs(u2-u1)>=e){
   u1=pow(-1,i)*pow(u1,i);
   u2=pow(-1,i+1)*pow(u1,i+1);
   s=s+u1;
   i++;
   }
   
  cout<<s;
  system("PAUSE");  
  return 0;
}

Желательно с тестовыми данными, а то у меня если U1>E, то ответ будет "1-pow(-1,i)*pow(u1,i)" тоесть "1-U1", а если U1<E, то ответ равен "1"=((

помогите решить =)

Добавлено через 3 минуты
Пишу на Dev C++

Добавлено через 43 минуты
Помогите =)

Добавлено через 2 часа 38 минут
хелп)

Добавлено через 14 минут
Ещё один вопрос. На ту же тему. Как сделать так, чтобы оно прерывало цикл если значение |Un+1-Un| > E. Скажем я ввожу Е = 100000, а оно выводит результат с Е>100000. Есть ли в С++ цикл, типа repeat - until в паскаль?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
main()
{
float u2,e; float s=0, i=1, u1=3;
 cout<<"E-> "; cin>>e;
  while (fabs(u1-u2)<=e) {
   u1=u1*i;
   u2=u1*(i+1);
   s=s+1/u1;
   i++;}
   
   
  cout<<"E= "<<fabs(u1-u2)<<"   Summa= "<<s<<endl;
  system("PAUSE");  
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2010, 22:13     Вычислить сумму ряда
Посмотрите здесь:

C++ Вычислить сумму ряда
Вычислить сумму четных и сумму нечетных чисел натурального ряда от 1 до n C++
Вычислить сумму ряда. Где-то напутал знаки или формула ряда не правильная. Посмотрите свежим взглядом. C++
C++ Вычислить сумму ряда
Вычислить сумму четных и сумму нечетных чисел натурального ряда от 1 до N C++
C++ Вычислить сумму ряда
C++ Вычислить сумму ряда
C++ Вычислить сумму ряда
Вычислить сумму ряда C++
C++ Вычислить сумму ряда
C++ Вычислить сумму ряда
Вычислить сумму ряда C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
04.03.2010, 22:16     Вычислить сумму ряда #2
Цитата Сообщение от Helfer Посмотреть сообщение
Есть ли в С++ цикл, типа repeat - until в паскаль
Насколько я понял, тебе нужен do ... while.
C++
1
2
3
4
5
6
7
//...
int i = 0;
 
do{
  ++i;
} while(i < 10);
// ...
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
04.03.2010, 22:19     Вычислить сумму ряда #3
в первом твоем случае используешь
C++
1
u1=pow(-1,i)*pow(u1,i);
глупость же, (-1)^i можно получить более дешевой операцией на каждом шаге делая i=-i;
на самом деле нет смысла вычислять это выражение каждый раз, можно сосчитать его, хранить в цикле, а на следующем шаге домножить на -n*x, алгоритмизация мать ее..)
Цитата Сообщение от Helfer Посмотреть сообщение
Скажем я ввожу Е = 100000, а оно выводит результат с Е>100000
C++
1
2
3
4
5
if( E > 1e6 ){
  cout << "error!";
  system("pause");
  return -1;
}
Цитата Сообщение от Helfer Посмотреть сообщение
типа repeat - until в паскаль?
C++
1
2
3
do{
//..
}while( ... );
Helfer
ЙожЪ
63 / 59 / 7
Регистрация: 23.10.2009
Сообщений: 652
04.03.2010, 22:33  [ТС]     Вычислить сумму ряда #4
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Насколько я понял, тебе нужен do ... while.
а разве это не одно и то же?)


alex_x_x,
CyBOSSeR,
всем спасибо, щас попробую)

Добавлено через 2 минуты
alex_x_x,
Цитата Сообщение от alex_x_x Посмотреть сообщение
if( E > 1e6 ){
cout << "error!";
system("pause");
return -1;
}
что оно даст? у меня просто программа прерывается=(

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
main()
{
float u2,e; float s=0, i=1, u1=3;
 cout<<"E-> "; cin>>e;
  do { 
   u1=u1*i;
   u2=u1*(i+1);
   s=s+1/u1;
  if( e > fabs(u1-u2)){
  cout<<"E= "<<fabs(u1-u2)<<"   Summa= "<<s<<endl;
}
   i++;}
   while (fabs(u1-u2)<=e);
   
   
  
  system("PAUSE");  
  return 0;
}
вот, работает почти как нужно, как сделать, что бы не выводило все результаты, атолько последний

З.Ы. Не ругайтесь, я только учусь =)
Yandex
Объявления
04.03.2010, 22:33     Вычислить сумму ряда
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru