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

Вычисление суммы ряда, подскажите пожалуйста - C++

Восстановить пароль Регистрация
 
apowOw
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 21
02.10.2013, 13:16     Вычисление суммы ряда, подскажите пожалуйста #1
Добрый день, уважаемые программисты!
Совсем недавно узнал про этот замечательный форум, очень рад, что есть такие добрые и отзывчивые люди как вы.
Хотелось бы попросить у вас помощи, разобраться с одним заданием.

Дано натуральное число N. Вычислить: сама формула во вложении.
Вот код, подскажите, что не так, что нужно исправить и что нужно дописать.
Заранее спасибо!

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 "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
double factorial (double n)
 
{
    if (n<=1)
    return 1;
else
    return n*factorial (n-1);
}
int main( void )
{
 
double y,s,u;
    s=0;
    double i;
    double n;
printf("Vvedite naturalnoe chislo N\n");
   scanf("%f",&n);
 
   for(i=1; i<=n; i++)
    
{
    y=factorial(i+n);
    u=factorial(i);
    s=u/y;
    printf("s=%f\t");
    scanf("%f",&s);
   
}
getch ();
}
Миниатюры
Вычисление суммы ряда, подскажите пожалуйста  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2013, 13:16     Вычисление суммы ряда, подскажите пожалуйста
Посмотрите здесь:

Вычисление суммы ряда C++
C++ Вычисление суммы ряда
C++ Вычисление суммы ряда
C++ Вычисление суммы ряда
C++ Вычисление суммы ряда
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
02.10.2013, 13:20     Вычисление суммы ряда, подскажите пожалуйста #2
%lf для double

Добавлено через 1 минуту
C++
1
2
3
4
scanf("%lf",&n);
//...
printf("s=%lf\t",s);
//scanf("%f",&s);
apowOw
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 21
02.10.2013, 13:27  [ТС]     Вычисление суммы ряда, подскажите пожалуйста #3
Спасибо ОГРОМНОЕ, как только внёс изменения - всё заработало!
СПАСИБО!!!
Байт
 Аватар для Байт
13964 / 8795 / 1223
Регистрация: 24.12.2010
Сообщений: 15,930
02.10.2013, 13:47     Вычисление суммы ряда, подскажите пожалуйста #4
Если надо сделать то, что написано в задании, тогда цикл должен выглядеть так
C++
1
2
3
4
5
6
for(i=1; i<=n; i++) {
y=factorial(i+n);
u=factorial(i);
s += u/y;
}
printf("s=%f\n");
И я бы не стал так неэффективно вычислять все факториалы
C++
1
2
3
4
5
double m;
for(i=1, s=0, m=1; i<=n; i++) {
  m *= i/(n+i);
  s += m;
}
apowOw
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 21
10.10.2013, 22:04  [ТС]     Вычисление суммы ряда, подскажите пожалуйста #5
Хотелось бы снова обратиться за помощью.
Вот уже созданная ранее тема с подробным описанием задания
http://www.cyberforum.ru/cpp-beginne...ead967078.html

Собственно код, был модифицирован, добавил 2 функции на проверку данных и отдельно на подсчет суммы.
Сейчас при компиляции выходит ошибка на переменную n.
Думаю что в функции суммы накосячил.
Подскажите пожалуйста в чем дело.
Заранее спасибо.


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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "stdafx.h" //подключение директив
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
 
 
double factorial (double n)//функция вычисления факториала
 
{
if (n<=1)
return 1;
else
return n*factorial (n-1);
}
 
int summa ()
{
    double n,s,u,y;
    for (int i=0;i<=n;i++)
    {
        s=0;
        y=factorial(i+n);
        u=factorial(i);
        s= u/y;
    }
    return s;
}
 
int input() //функция ввода данных
{
printf ("Vvedite znachenie n (ot 1 do 999) and press <ENTER>: "); //вывод на экран приглашения на ввод данных
char str[4],c;  //объявление символьных переменных
int pos=0;  //инициализация переменной количества вводимых символов
do //выполняем ввод данных
 {
  c = getch();  //считывание введённого символа без эхо-отображения
  if(c>='0'&&c<='9' && pos<3)  //если переменная соответствует диапазону 
                  //и не превышает разрешённое количество вводимых символов
   {
    str[pos++]=c; //двигаем позицию курсора на шаг вправо, и присваиваем введённое значение
    printf("%c",c); //то выводим его на экран
   }
  else if(c==0x08 && pos>0) //если введён <backspace>
   {
    pos--; //двигаем позицию курсора на шаг влево
    printf("%c %c",c,c);
   }
 } while(c!=0x0D); //ввод данных выполняется, пока не введён <enter>
str[pos]=0;
return atoi(str);  //преобразование символьной строки в число типа int и её возврат в основную функцию
}
 
 
int main( void )
{
 
double s;
double i;
double n;
n=input();
s=summa();
printf("s=%lf\t",summa);
 
scanf("%lf",&summa);
 
 
getch ();
}
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
10.10.2013, 22:13     Вычисление суммы ряда, подскажите пожалуйста #6
Ну на вскидку у вас в функции
C++
1
int summa()
n используется без инициализации.
apowOw
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 21
10.10.2013, 22:16  [ТС]     Вычисление суммы ряда, подскажите пожалуйста #7
C++
1
double n,s,u,y;
а это разве не инициация?)
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
10.10.2013, 22:19     Вычисление суммы ряда, подскажите пожалуйста #8
apowOw, это объявление переменных, инициализация это к примеру
C++
1
double n = 5;
apowOw
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 21
10.10.2013, 22:22  [ТС]     Вычисление суммы ряда, подскажите пожалуйста #9
Тогда мне здесь следует дописать ???
C++
1
n=input();
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
10.10.2013, 22:25     Вычисление суммы ряда, подскажите пожалуйста #10
apowOw, это зависит от того что вы хотите сделать.
apowOw
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 21
10.10.2013, 22:27  [ТС]     Вычисление суммы ряда, подскажите пожалуйста #11
хотелось бы посчитать сумму ряда от i до n(введенного с клавиатуры)
на вводимую n у меня указана функция input
при выводе использую именно её, здесь тоже самое указать?
n=input();
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
10.10.2013, 22:32     Вычисление суммы ряда, подскажите пожалуйста #12
apowOw, да, но зачем у вас ввод через такие грабли сделан?

Добавлено через 2 минуты
и пожалуй эти 2 строчки вам в main не нужны
C++
1
2
double n;
n=input();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2013, 23:13     Вычисление суммы ряда, подскажите пожалуйста
Еще ссылки по теме:

Вычисление суммы ряда C++
Найдите ошибку, пожалуйста: вычисление суммы ряда C++
Вычисление суммы ряда C++

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

Или воспользуйтесь поиском по форуму:
apowOw
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 21
10.10.2013, 23:13  [ТС]     Вычисление суммы ряда, подскажите пожалуйста #13
потому что преподаватель потребовал написал проверку введенных данных на соответствие диапазону.
поэтому так)
спасибо))))

Добавлено через 38 минут
У меня похоже неправильно написана функция подсчета суммы.
Если указывать функцию типа int, то он в качестве результаты постоянно выводит 0;
Подскажите пожалуйста.
Yandex
Объявления
10.10.2013, 23:13     Вычисление суммы ряда, подскажите пожалуйста
Ответ Создать тему
Опции темы

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