Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 14
1

Вычислить сумму знакопеременного ряда. Код есть (корявый правда)

23.04.2010, 17:38. Просмотров 1855. Ответов 5
Метки нет (Все метки)

Всем привет! Нужна ваша помощь! Парюсь с этой задачей очень долго.
Задание следующее: Описать функцию S(x, е), вычисляющую значение суммы ряда в точке x с указанной точностью е, если формула суммы:
S = x - x/2 + x/3 - x/4 + ...
Обратиться с координатами точек x *из* [–0.5;+0.5], шаг = 0.1.
Есть еще одно задание: нарисовать табличку в рамке, но это потом сам скорее всего сделаю.
Код есть. Корявенький но есть. Простите за кривость языка. На Си++ начал работать с января, но очень редко сажусь (раз в неделю).
Не знаю, в чем проблема. Вроде все правильно. Но выдают крит. ошибку при подсчете суммы. Компилируется. Как только вводим Х и Е - выкидывает.
Заранее, огромное спасибо.

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
25
26
27
28
29
30
31
32
#include <math.h>
#include <conio.h>
#include <iostream.h>
 
 
float eps,x,S,k,a;
double E;
 
double zad1()
  {
      cout<<"X,E\n";
      cin>>x;
      cin>>eps;
 
    E = pow(10,(-eps));
 
    while((fabs(S)<E)&&(k++))
    {
    S=0;
    a=(pow((-1),k)*(x/k));
    S=S+a;
    }
 
 
    return(S);
  }
  void main()
  {
      zad1();
      cout<<"s="<<S;
      getch();
  }
Добавлено через 19 минут
немного отредактировал, увидел пару детских ошибок. теперь вот. но результат ТОТ ЖЕ.
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
25
26
27
28
29
30
31
32
#include <math.h>
#include <conio.h>
#include <iostream.h>
 
 
float eps,x,S,k,a;
double E;
 
double zad1()
  {
      cout<<"X,E\n";
      cin>>x;
      cin>>eps;
 
    E = pow(10,(-eps));
 
    S=0;
    while((fabs(S)<=E)&&(k++))
    {
    a=(pow((-1),k)*(x/k));
    S=S+a;
    }
 
 
    return(S);
  }
  void main()
  {
      zad1();
      cout<<"s="<<S;
      getch();
  }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2010, 17:38
Ответы с готовыми решениями:

Вычислить сумму знакопеременного ряда
1-\frac{1}{2}+\frac{1}{3}-...+\frac{1}{999}-\frac{1}{1000} ...

Вычислить сумму знакопеременного ряда
http://s019.***********/i624/1301/0d/1286eec97265.png

Вычислить сумму знакопеременного ряда

Вычислить сумму знакопеременного ряда
ЗАДАНО действительное число x. Вычислить ...

5
22 / 22 / 0
Регистрация: 18.03.2010
Сообщений: 105
23.04.2010, 17:48 2
значение 'k' какое?
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 14
23.04.2010, 17:54  [ТС] 3
ах блин я задание не понял.
к должно изменяться. видимо зависит от х, который изменяется от -0.5 до 0.5

Добавлено через 5 минут
вот, с точками х от -0.5 до 0.5 с шагом 0.1

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
25
26
27
28
29
30
31
32
33
34
35
#include <math.h>
#include <conio.h>
#include <iostream.h>
 
 
float eps,x,S,k,a;
double E;
 
double zad1()
  {
      cout<<"E\n";
 
      cin>>eps;
 
    E = pow(10,(-eps));
 
    S=0;
    for (x = -0.5; x <= 0.5; x+0.1)
     {
    while((fabs(S)<=E)&&(k++))
    {
    a=(pow((-1),k)*(x/k));
    S=S+a;
    }
    }
 
 
    return(S);
  }
  void main()
  {
      zad1();
      cout<<"s="<<S;
      getch();
  }
0
22 / 22 / 0
Регистрация: 18.03.2010
Сообщений: 105
23.04.2010, 18:08 4
вы сделали чтобы менялся х, а что у вас за переменная к??
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 14
23.04.2010, 19:41  [ТС] 5
это индекс.
ряд - бесконечный.
следовательно к - это индекс бесконечного цикла, но:
на определенном индексе сумма ряда должна закончить высчитывать для опредленной точности.
напимер:
x + x/2 - x/3 + x/4 : 1,2,3,4 - это индексы.

Добавлено через 1 час 29 минут
вот сейчас выводит какую-то сумму, НО вводя Е он выдают столько сумм, сколько Е. Что делать?
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <math.h>
#include <conio.h>
#include <iostream.h>
 
 
float eps,x,S,k,a;
double E;
 
double zad1()
  {
      cout<<"E\n";
 
      cin>>eps;
 
    E = pow(10,(-eps));
 
    S=0;
    for (x = -0.5; x <= 0.5; x+=0.1)
     {
    while((fabs(k)<eps))
    {
    k++;
    a=(pow((-1),(k-1))*(x/k));
    S=S+a;
    cout<<"\ns="<<S;
    }
    }
 
 
 
    return(S);
  }
  void main()
  {
      zad1();
 
      getch();
  }
0
Эксперт С++
5037 / 3097 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
24.04.2010, 00:22 6
Не очень понятно, что такое E... И зачем возводить 10 в степень -eps...
И ещё, у вас S объявлена как float, а функция zad1 возвращает значение double... Нехорошо...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2010, 00:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вычислить сумму знакопеременного ряда
При Х изменяющемся от –0,5 до 1 с шагом 0,5

Вычислить сумму знакопеременного ряда
Написать программу, которая вычисляет сумму ряда. Количество суммируемых членов ряда вводится с...

Вычислить сумму знакопеременного ряда
помогите сделать

Вычислить сумму знакопеременного ряда
Помогите решить задачки две


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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