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

C цикл с while - C++

Восстановить пароль Регистрация
 
Waveox
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 6
26.10.2011, 14:21     C цикл с while #1
Доброго времени суток, уважаемые форумчане.
Прошу, Вашей, помощи в написании программы следующего содержания :

Вводится точность e. Вычислить сумму ряда (см. прил.). Вычисления продолжать до тех пор, пока очередное слагаемое не станет меньше e.

На сколько хватило моей соображалки, сумму ряда я могу взять из последнией части уравнения, так же я должен задать условие |x|>0. Более того, на вводе данных я задаю не только точность, но и пременную х для нахождения суммы ряда. В любом случае это только мои предположения, на деле я слабо представляю как написать программу с такого рода заданием, ибо аналогов в интернете нет, да и примеров на лекциях нам не показывали. Расчитываю на вашу помощь.

П.С. - программирование в большенстве своём происходит на C, с синтаксисом языка С++ ещё не знаком, хоть исходкики у нас и .срр.
Миниатюры
C цикл с while  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2011, 14:21     C цикл с while
Посмотрите здесь:

Цикл for C++
Цикл с параметром и цикл с условием C++
Цикл while (на С) C++
C++ Цикл for/Цикл while Помогите срочно пожалуйста...
C++ Цикл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
26.10.2011, 14:43     C цикл с while #2
Цитата Сообщение от Waveox Посмотреть сообщение
ибо аналогов в интернете нет
эт громко сказано, на этом самом форуме точно есть реализация именно этой формулы, причем не одна.
Waveox
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 6
26.10.2011, 17:29  [ТС]     C цикл с while #3
Прошу прощения, но найти данную формулу мне не удалось ни только на этом форуме, а в принципе. Или искал не достаточно, или мои познавательные способности слишком низки. Не составит ли, Вам, труда дать ссылку на тему(-ы) этого задания? Буду премного благодарен.

Добавлено через 23 минуты
Цитата Сообщение от Waveox Посмотреть сообщение
Прошу прощения, но найти данную формулу мне не удалось ни только на этом форуме, а в принципе. Или искал не достаточно, или мои познавательные способности слишком низки. Не составит ли, Вам, труда дать ссылку на тему(-ы) этого задания? Буду премного благодарен.
В конце концов аналоги решения подобных функций я нашёл, но мне откровенно говоря они ни капли не помолги решить поставленную задачу. Так что помощь по коду ещё требеутся, помогите пожалуйста. ^_^

Добавлено через 1 час 31 минуту
Я бы даже не отказался от программы, которая считает сумму ряда выглядевшего как 1+2+3....
Просто план к действию уже примерно есть
Нужно:
1) Спросить у пользователя x.
2) Если |x|<=1, объяснить пользователю, что он слишком много хочет.
3) Спросить у пользователя e
4) Начать складывать слагаемые из правой части равенства нарастающим итогом.
5) При этом, как только очередное слагаемое окажется меньше e по модулю, прервать сложение и выдать пользователю сумму.

Есть даже условие точности:

n-ный член S(x, n) = 2/((2n+1)*x^(2n+1)), при n=0,1,2,...

А реализовать программу всёравно не могу, понятия не имею как это всё написать на си.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
26.10.2011, 23:44     C цикл с while #4
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
#include <stdio.h>
#include <math.h>
 
int main()
{
   double sum = 0., x, e, term;
   int n = 1;
   
   printf("Введите значение аргумента x: ");
   scanf("%f", &x);
   if (fabs(x) <= 1.0)
   {
      printf("x должен быть |x| > 1\n");
      return 1;
   }
   printf("Введите точность e:");
   scanf("%f", &e);
   term = 1/x;
   while (fabs(term) > e)
   {
      sum += term;
      term *= (2*n - 1)/(x*x*(2*n + 1));
      n++;
   }
   sum *= 2;
   printf("Значение функции - %f\n", sum);
   return 0;
}
Это через рекурентную формулу, если требуется аналитический вид, то строку
C
1
term *= (2*n - 1)/(x*x*(2*n + 1));
замени на
C
1
term = 1/((2*n + 1)*pow(x, (double)(2*n + 1)));
Waveox
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 6
27.10.2011, 00:50  [ТС]     C цикл с while #5
Спасибо за труды, разве что я уже сам к вечеру написал программу, получилось что-то вроде этого.

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
#include <stdio.h>
#include <conio.h>
#include <math.h> 
 
int main()
{
int n=0;
 float e,x,i, sum=0;
 printf("Insert accuracy\n");
    scanf("%f", &e);
 printf("Insert x-value\n");
 scanf("%f", &x);
        if (abs(x)>1)
        {
            i = 2/((2*n+1)*pow(x,(2*n+1)));
            while (i>e) {
               sum+=i;  
               n++;
               i = 2/((2*n+1)*pow(x,(2*n+1))); }
           printf ("Result is %f",sum);
        } else printf("Incorrect number");
 
 getch();
 return 0;
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
27.10.2011, 01:24     C цикл с while #6
abs работает с целыми числами, для вещественных есть функция fabs
Yandex
Объявления
27.10.2011, 01:24     C цикл с while
Ответ Создать тему
Опции темы

Текущее время: 09:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru