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

вызов функцииж факториал - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
vasilisa-9090
 Аватар для vasilisa-9090
1 / 1 / 0
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 05:24     вызов функцииж факториал #1
не могу найти ошибку в программе. задание: Составить программу решения задачи с использованием функций нахождения факториала и числа сочетаний из n по m. заранее спасибо за помощь.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream.h>
#include<math.h>
 
double H (double (*f)(double), double m, n)
{
return f(n)/(f(m)*f(n-m));
}
 
double f(double n)
{
return {
p=0.0;
for(i=0;i<=n;i++) p=p*i; }
}
int main()
{ double m,n C;
cout<<"VVedite m, n\n";
cin>>m>>n;
cout<<H(f,n,m,n-m);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 05:24     вызов функцииж факториал
Посмотрите здесь:

C++ Факториал
Факториал C++
C++ Факториал
факториал (2k+1)!с++ C++
C++ факториал
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vasilisa-9090
 Аватар для vasilisa-9090
1 / 1 / 0
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 14:27  [ТС]     вызов функцииж факториал #21
Задание звучит так: Составить программу решения задачи с использованием функций нахождения факториала и числа сочетаний из n по m по формуле C(n,m)=n!/(m!*(n-m)!). Нахождение факториала осуществить с помощью вызова подпрограммы. Обчислити вираження для заданих n, x:
http://www.cyberforum.ru/cgi-bin/latex.cgi?y= \sum_{i=0}^{n}C_{n}^{i}*{x}^{i}

Добавлено через 1 минуту
я просто уже не знаю что с єтой программой делать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
24.04.2013, 14:31     вызов функцииж факториал #22
Так это будет http://www.cyberforum.ru/cgi-bin/latex.cgi?(x+1)^n. Тут и вычислять ничего не надо.
vasilisa-9090
 Аватар для vasilisa-9090
1 / 1 / 0
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 14:34  [ТС]     вызов функцииж факториал #23
Простите за глупый вопрос, а куда это нужно вставить в этой программе?
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
24.04.2013, 14:35     вызов функцииж факториал #24
Цитата Сообщение от vasilisa-9090 Посмотреть сообщение
не могу найти ошибку в программе.
Я же указал вам на ошибки, а вы по-прежнему выкладываете ошибочный вариант.

Добавлено через 1 минуту
С вас, наверно, требуют вычислять это через бином Ньютона. А как сейчас выглядит ваша программа?
vasilisa-9090
 Аватар для vasilisa-9090
1 / 1 / 0
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 14:38  [ТС]     вызов функцииж факториал #25
по прежнему:
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
#include<iostream.h>
#include<math.h>
 
double H (double (*f)(double), double n, double m)
{
return f(n)/(f(m)*f(n-m));
}
double f(double n)
{
     double p=1.0;
     for(int i=1;i<=n;i++) p=p*i;
     return p;
}
 
int main()
{ double m,n ;
cout<<"VVedite m, n\n";
cin>>m>>n;
cout<<H(f,n,m);
double x,y;
cout<<"\nVVedite x\n";
cin>>x;
for(int i=1;i<=n;i++)
y=H(f,n,i)*pow(x,i);
cout<<"y="<<y;
}
Добавлено через 26 секунд
я исправила ошибку в 1-м вызове функции

Добавлено через 35 секунд
только она с вызовом 2-й отказывается 1-ю считать

Добавлено через 1 минуту
она работала в виде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream.h>
#include<math.h>
 
double H (double (*f)(double), double m, double n)
{
return f(n)/(f(m)*f(n-m));
}
double f(double n)
{
     double p=1.0;
     for(int i=1;i<=n;i++) p=p*i;
     return p;
}
void main()
{ double m,n,x,y ;
cout<<"VVedite m, n\n";
cin>>m>>n;
cout<<H(f,n,m);}
Добавлено через 22 секунды
только нужно ведь еще сумму посчитать
-=ЮрА=-
24.04.2013, 14:40
  #26

Не по теме:

vasilisa-9090, хорошо сейчас набросаю

palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
24.04.2013, 14:49     вызов функцииж факториал #27
C++
1
2
3
4
5
cin>>x;
y=0;
for(int i=0;i<=n;i++)
y+=H(f,n,i)*pow(x,i);
cout<<"y="<<y;
Добавлено через 6 минут
Только если http://www.cyberforum.ru/cgi-bin/latex.cgi?x<0 то функция pow работать не будет. У вас в задании есть условие, что http://www.cyberforum.ru/cgi-bin/latex.cgi?x\ge 0 ?
vasilisa-9090
 Аватар для vasilisa-9090
1 / 1 / 0
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 14:55  [ТС]     вызов функцииж факториал #28
только оно все равно 1-ю функцию не считает. выдает ответ что для С равный иксу, который вводишь, а в мат модели он другой. а х там положительный вводится по заданию
-=ЮрА=-
Заблокирован
Автор FAQ
24.04.2013, 14:57     вызов функцииж факториал #29
vasilisa-9090, если совсем просто
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
#include <iostream>
using namespace std;
 
int fact(int n);
int C(int n, int m);
//C(n,m)=n!/(m!*(n-m)!)
 
int main()
{
    int   i,n = 0;
    double x = 0;
    double y = 0;
    double power;
    while(true)
    {
        cout<<"n = ";cin>>n;
        cout<<"x = ";cin>>x;
        power = x;
        for(y = (i = 0); i <= n; i++)
        {
            y = y + C(i, n)*power;
            power = power*x;
        }
        cout<<"y = "<<y<<endl;
    }
    return 0;
}
 
int fact(int n)
{
    int ret = n;
    if(n == 0)
        ret = 1;
    else
    if(0 < (n -= 1))
        ret *= fact(n);
    return ret;
}
 
int C(int n, int m)
{
    return fact(n)*1.0/(fact(m)*fact(n - m));
}
Миниатюры
вызов функцииж факториал  
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
24.04.2013, 14:58     вызов функцииж факториал #30
Сейчас я поищу ошибку.
-=ЮрА=-
Заблокирован
Автор FAQ
24.04.2013, 15:06     вызов функцииж факториал #31

Не по теме:

На самом же деле формула числа сочетаний и факториала для рассчёта на кажой итерации и не нужна, ведь у нас сумма элементов ряда надо всего лишь найти отношение для двух смежных членов, рассчитать первый член ряда и накомпить сумму. Когда появится время накидаю



Добавлено через 4 минуты
Эффективная формула вычисления числа сочетаний


Добавлено через 2 минуты
http://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{i} = {{C}^{i}}_{n}*{x}^{i} = \frac{n!}{i!*(n - i)!}*{x}^{i}
http://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{i + 1} = {{C}^{i + 1}}_{n}*{x}^{(i + 1)} = \frac{n!}{(i + 1)!*(n - (i + 1))!}*{x}^{(i + 1)}
Итератор
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{{y}_{i + 1}}{{y}_{i}} =  \frac{\frac{n!}{(i + 1)!*(n - (i + 1))!}*{x}^{(i + 1)}}{\frac{n!}{i!*(n - i)!}*{x}^{i}} = x*\frac{i!}{(i + 1)!}*\frac{(n - i - 1)!*(n - i)}{(n - i - 1)!} = x*\frac{(n - i)}{i + 1}
okman
 Аватар для okman
15 / 21 / 1
Регистрация: 05.04.2013
Сообщений: 203
24.04.2013, 15:10     вызов функцииж факториал #32
Цитата Сообщение от vasilisa-9090 Посмотреть сообщение
Задание звучит так: Составить программу решения задачи с использованием функций нахождения факториала и числа сочетаний из n по m по формуле C(n,m)=n!/(m!*(n-m)!). Нахождение факториала осуществить с помощью вызова подпрограммы. Обчислити вираження для заданих n, x:
Что такое "i" и откуда его взять? Если я тебя правильно понял то я почти решил задачу
-=ЮрА=-
Заблокирован
Автор FAQ
24.04.2013, 15:11     вызов функцииж факториал #33
Итак вот теперь как выглядит задача
http://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{0} = {{C}^{i}}_{n}*{x}^{i} = \frac{n!}{i!*(n - i)!}*{x}^{i} = \frac{n!}{0!*(n - 0)!}*{x}^{0} = 1 далее просто в цикле ведём итерационное домножение
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
24.04.2013, 15:13     вызов функцииж факториал #34
Не знаю. У меня ваша программа (с моими последними исправлениями) работает правильно.
Вводил 2 5 и 0.1
Программа выдала 10 и 1.61051
Компилятор Borland C++ 5.5.1
-=ЮрА=-
24.04.2013, 15:14
  #35

Не по теме:

okman, в формуле брать в посте 22

vasilisa-9090
 Аватар для vasilisa-9090
1 / 1 / 0
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 15:19  [ТС]     вызов функцииж факториал #36
спасибо огромное! только у меня компилятор
C++
1
while(true)
не воспринимает почему-то и ошибку выдает. и я, как новичек, не могу понять где здесь вызов функций. нам просто задали написать чтобы факториал вызывался отдельной функцией.
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
24.04.2013, 15:19     вызов функцииж факториал #37
Вот скриншот.
Миниатюры
вызов функцииж факториал  
-=ЮрА=-
Заблокирован
Автор FAQ
24.04.2013, 15:21     вызов функцииж факториал #38
Так вот vasilisa-9090, смотри сколько было кода в посте 30 и сколько кода в этом с учётом рекурентных формул
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main()
{
    int   i,n = 0;
    double x = 0;
    double y = 0;
    while(true)
    {
        cout<<"n = ";cin>>n;
        cout<<"x = ";cin>>x;
        y = x;
        for(i = 0; i < n; i++)
            y = y*(n - i)*x/(i + 1);
        cout<<"y = "<<y<<endl;
    }
    return 0;
}
А результат тотже, вот почему кроме колосального сокращения числа вычислительных операций, итерационное домножение ещё существенно упрощает сам код. Так что как говориться - зачем больше платить?
Миниатюры
вызов функцииж факториал  
-=ЮрА=-
Заблокирован
Автор FAQ
24.04.2013, 15:23     вызов функцииж факториал #39
Цитата Сообщение от vasilisa-9090 Посмотреть сообщение
пасибо огромное! только у меня компилятор
Код C++
1
while(true)
не воспринимает почему-то и ошибку выдает. и я, как новичек, не могу понять где здесь вызов функций. нам просто задали написать чтобы факториал вызывался отдельной функцией.
достаточно записать while(1) думаю установлен довольной старый BorlandC который не воспринимает C++ а компилирует под Си
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2013, 15:24     вызов функцииж факториал
Еще ссылки по теме:

C++ С++ Факториал
факториал и с++ C++
C++ Факториал

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

Или воспользуйтесь поиском по форуму:
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
24.04.2013, 15:24     вызов функцииж факториал #40
Цитата Сообщение от vasilisa-9090 Посмотреть сообщение
не воспринимает почему-то и ошибку выдает
В вашем компиляторе нет типа bool и соответствующих констант true и false.
Так что замените true на 1 и должно заработать.
Yandex
Объявления
24.04.2013, 15:24     вызов функцииж факториал
Ответ Создать тему
Опции темы

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