С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 17
1

Вычислить сумму первых N элементов ряда

12.01.2013, 16:43. Показов 3274. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер, помогите, пожалуйста с заданием:
Вычислить сумму первых N элементов ряда: 1-х2/2+х3/3-x4/4+x5/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 <math.h>
#include <conio.h>
main()
{
float S,z,e,c ;
int x, i;
scanf("%d%d",&x,&e);
S=0.0f;
 
i=0;
while (z<e) {
      
        z = pow(x, i)/i;
        c = i%2;
        if (c=0)
            S += z;
        else 
            S -= z;
            ++i;
        
}
printf("S=%f\n",S);
getch();
}
Заранее спасибо!
P.S. случайно перепутал название темы, извиняюсь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2013, 16:43
Ответы с готовыми решениями:

Вычислить сумму первых N элементов ряда
помогите, пожалуйста с заданием: Вычислить сумму первых N элементов ряда: 1+ x^1/1! + x^2/2! +...

Вычислить сумму первых N элементов ряда
Вычислить сумму первых N элементов ряда: 1+x^1/1!+x^2/2!+x^3/3!+x^4/4+... Компилирует без...

Простейшие циклы.Вычислить сумму первых N элементов ряда
Вычислить сумму первых N элементов ряда: 1/x+2/x2+3/3x3+4/4x4... . Вычисления проводить до тех...

Вычислить сумму первых десяти элементов ряда заданного формулой
Всем привет! Помогите пожалуйста кто может. Задача такая. Вычислить сумму первых десяти элементов...

14
158 / 157 / 81
Регистрация: 31.12.2012
Сообщений: 254
12.01.2013, 16:52 2
Это язык Си и все компилится
0
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 17
12.01.2013, 16:56  [ТС] 3
Компилится-то, компилится, но результат он выдает неверный, и почему так, я понять не могу, поэтому Вам и написал
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
12.01.2013, 17:04 4
Вместо if (c=0)
надо if(c == 0) ?
0
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 17
12.01.2013, 17:09  [ТС] 5
не помогло
убрал
C
1
S=0.0f;
, теперь выдает не 0, а какое-то гигантское число, но оно все равно не меняется, вне зависимости от исходных данных
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
12.01.2013, 17:29 6
Пользуйся отладкой!

при первом прогоне у тебя i есть 0, т.е.
в z = pow(x, i)/i ты ДЕЛИШЬ на нуль...

результат = inf

Добавлено через 1 минуту
и только потов в теле цикла увеличиваешь счетчик!

i=0; замени на i=1; тогда уж..

Добавлено через 1 минуту
и S первоначально должна быть = 1 а не 0, т.к. по формуле 1-...
0
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 17
12.01.2013, 17:31  [ТС] 7
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 <math.h>
#include <conio.h>
main()
{
float S,z,e,c ;
int x, i;
scanf("%d%d",&x,&e);
 
 
i=1;
while (fabsf(z)>e) {
      
        z = pow(x, i)/i;
        c = i%2;
        if (c==0)
            S += z;
        else 
            S -= z;
            ++i;
        
}
printf("S=%f\n",S);
getch();
}
дошел до этого, но теперь программа зацикливается, не могу понять почему
отладка у меня не работает, к сожалению
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
12.01.2013, 17:42 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    // 1-х2/2+х3/3-x4/4+x5/5...
    S = 1.;
    i = 1;
    while (z < e) {
 
        z = pow(x, i) / i;
 
        c = i % 2;
        if (c == 0)
            S += z;
        else
            S -= z;
        // DEBUG:
        printf("\n#%d S = %lf, z = %lf, c = %d", i, S, z, (int) c);
        ++i;
    }
    printf("\n\nS=%lf\n", S);

вот

C++
1
2
        // DEBUG:
        printf("\n#%d S = %lf, z = %lf, c = %d", i, S, z, (int) c);
позволит понять что у тебя происходит в теле...
если все быстро будет "бежать", то можно после printf("\n#...) поставить getch(); - будешь жмакать на клаву для перехода на следующую итерацию..

Добавлено через 6 минут
Цитата Сообщение от Shadowdown Посмотреть сообщение
Вычисления проводить до тех пор, модуль очередного элемента
больше ε .
А у тебя
while (z < e)
т.е. "выполнять пока e больше z"

знак поменяй..
0
158 / 157 / 81
Регистрация: 31.12.2012
Сообщений: 254
12.01.2013, 17:43 9
Вот я начирикал под более рабочий вид.
И она работает.
Калькулятор в руки и вручную просчитано.
Знаки + - чередуются.
x=1; n=25;
Естественно x тупо меняешь и все.

Точность я задал приблизительно исходя из ручных и расчетов подвердившихся из программы.
Здесь при переключении при каждой итерации знака, получится так, что очееень медленно но число будет стремится в сторону отрицания., только цикл нужен будет очень продолжительный чтобы добится условия, что сумма не ушла ниже эпселента. Это я все к тому что я закоментил 3 стоки с проверкой на предел итераций.(смотри ниже в коде).

В общем в программе 2 сценария окончания:

1.) Количество N превышано.
2.) Сумма ушла ниже эпселента


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
#include <stdio.h>
#include <math.h>
 
int main(void)
{
 
   double e,z,sum=1,i,x=1,t=0;
   int r,n=25;
   
   e=0.15;
   i=2;
   
   printf("\n");
 
   while (i<=n) {
      r=i/2;
      t=i/2;
      if(r == t) {
         z=pow(x,i)/i;
         sum=sum-z;
         i++;
      }
      else if(r != t) {
         z=pow(x,i)/i;
         sum=sum+z;
         i++;
      }
      //if (sum < e) {
         //break;
      //}
      printf("\nResult promechytochny`` = %f\n",sum);
   }
   
   printf("\n");
   printf("Result = %f\n",sum);
   printf("\n");
}
Обрати внимания на скрине на промежуточные результаты начиная со второго полученного и через один смотри. От 83.33 до 71.14 и так и будет ниже. ТОбишь количество N поставь 100 и посмотри.
Миниатюры
Вычислить сумму первых N элементов ряда  
0
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 17
12.01.2013, 18:38  [ТС] 10
Спасибо огромное!
Можете объяснить пожалуйста одну вещь:
C
1
2
3
4
5
6
7
8
r=i/2;
t=i/2;
 if(r == t) {
z=pow(x,i)/i;
sum=sum-z;
i++;
}
else if(r != t)
как возможно неравенство этих двух переменных, если они присваиваются одному и тому же значению?
0
158 / 157 / 81
Регистрация: 31.12.2012
Сообщений: 254
12.01.2013, 18:43 11
а так я проверяю на четность или нечетность тем самым создавая условия для + или -
r-double
t-integer

ТИПЫ у ПЕРЕМЕННЫХ разные

Пример Строка 2:
r=2/2=1.0
t=2/2=1
r == t
Четная

Пример Строка 3:
r=3/2=1.5
t=3/2=1
r != t
Нечетная
0
40 / 40 / 32
Регистрация: 24.11.2012
Сообщений: 200
12.01.2013, 20:27 12
Belkin-VD, что-то как-то мудрено. не проще if(t%2==0)-четное , else-нечетное?
0
158 / 157 / 81
Регистрация: 31.12.2012
Сообщений: 254
13.01.2013, 06:32 13
Agent Smith, конечно так проще, но так как сделал я - пусть есть пара лишних строк - зато более универсально.
Кроме языка си есть еще куча языков, и не факт, что так как Вы реализуете - пройдет.
А вот подразделение на типы я подразумеваю что есть на всех яыках.
1
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 17
13.01.2013, 21:38  [ТС] 14
Большое спасибо, разобрался!
0
40 / 40 / 32
Регистрация: 24.11.2012
Сообщений: 200
13.01.2013, 21:45 15
Belkin-VD, ну остаток то от деления насколько я знаю есть во всех языках. а вот например в паскале целочисленное деление-это div, а просто деление-/. и зачем эта универсальность? в каждом языке свои особенности и ваша "универсальность" может обернуться большими проблемами
0
13.01.2013, 21:45
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2013, 21:45
Помогаю со студенческими работами здесь

Вычислить сумму первых n (задается во время работы программы) членов ряда нечетных чисел
Написать программу, которая вычисляет сумму первых n членов ряда: 1,3,5,7 ... Количество...

Подсчитать сумму членов ряда с точностью до 0.000001 и сумму первых 10 членов ряда
Для ряда, члены которого вычисляются по формуле, соответствующей Вашему индивидуальному заданию,...

Подсчитать сумму членов ряда с точностью до 0.000001 и сумму первых 10 членов ряда
Для ряда, члены которого вычисляются по формуле, соответствующей Вашему индивидуальному заданию,...

Подсчитать сумму членов ряда с точностью до 0.000001 и сумму первых 10 членов ряда
Как будет выглядеть программа на Си Задания для выполнения Для ряда a_1+a_2 +\cdots+ a_n +...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru