Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
1

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

24.04.2013, 05:24. Показов 2500. Ответов 43
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
не могу найти ошибку в программе. задание: Составить программу решения задачи с использованием функций нахождения факториала и числа сочетаний из 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);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2013, 05:24
Ответы с готовыми решениями:

Факториал некторого числа записан в eax, а нужно вывести этот факториал в ebx
Хочу сделать код факториал некторого числа записан в eax, а нужно вывести этот факториал в ebx и...

Факториал. Определить максимальное число, факториал которого хранится в переменной типа int
/*Доброго времени суток ! Задача такова: Пользователь вводит число с клавы. Вывести на экран...

Описать рекурсивные функции вещественного типа, вычисляющие факториал и двойной факториал заданного числа
Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значения факториала...

Вызов методов классов друг у друга (вызов метода из другого класса)
Есть несколько классов, которые могут вызывать методы (функции) друг у друга. Логика: класс1 имеет...

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

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

Добавлено через 1 минуту
С вас, наверно, требуют вычислять это через бином Ньютона. А как сейчас выглядит ваша программа?
0
1 / 1 / 1
Регистрация: 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 секунды
только нужно ведь еще сумму посчитать
0
-=ЮрА=-
24.04.2013, 14:40
  #26

Не по теме:

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

0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 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 минут
Только если https://www.cyberforum.ru/cgi-bin/latex.cgi?x<0 то функция pow работать не будет. У вас в задании есть условие, что https://www.cyberforum.ru/cgi-bin/latex.cgi?x\ge 0 ?
0
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 14:55  [ТС] 28
только оно все равно 1-ю функцию не считает. выдает ответ что для С равный иксу, который вводишь, а в мат модели он другой. а х там положительный вводится по заданию
0
Заблокирован
Автор 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));
}
Миниатюры
вызов функцииж факториал  
2
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
24.04.2013, 14:58 30
Сейчас я поищу ошибку.
0
Заблокирован
Автор FAQ
24.04.2013, 15:06 31

Не по теме:

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



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


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

Не по теме:

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

0
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 15:19  [ТС] 36
спасибо огромное! только у меня компилятор
C++
1
while(true)
не воспринимает почему-то и ошибку выдает. и я, как новичек, не могу понять где здесь вызов функций. нам просто задали написать чтобы факториал вызывался отдельной функцией.
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
24.04.2013, 15:19 37
Вот скриншот.
Миниатюры
вызов функцииж факториал  
1
Заблокирован
Автор 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;
}
А результат тотже, вот почему кроме колосального сокращения числа вычислительных операций, итерационное домножение ещё существенно упрощает сам код. Так что как говориться - зачем больше платить?
Миниатюры
вызов функцииж факториал  
2
Заблокирован
Автор FAQ
24.04.2013, 15:23 39
Цитата Сообщение от vasilisa-9090 Посмотреть сообщение
пасибо огромное! только у меня компилятор
Код C++
1
while(true)
не воспринимает почему-то и ошибку выдает. и я, как новичек, не могу понять где здесь вызов функций. нам просто задали написать чтобы факториал вызывался отдельной функцией.
достаточно записать while(1) думаю установлен довольной старый BorlandC который не воспринимает C++ а компилирует под Си
1
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
24.04.2013, 15:24 40
Цитата Сообщение от vasilisa-9090 Посмотреть сообщение
не воспринимает почему-то и ошибку выдает
В вашем компиляторе нет типа bool и соответствующих констант true и false.
Так что замените true на 1 и должно заработать.
0
24.04.2013, 15:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2013, 15:24
Помогаю со студенческими работами здесь

Вызов запроса хранящегося в Access2000 и его вызов из VB, с получение Recordset.
Есть запрос хранящийся в БД Access2000. Как можно его вызвать из VB и получить от него Recordset?

Не удается выполнить исходящий вызов, так как приложение обрабатывает входящий синхронный вызов
И снова добренького вечера) Столкнулся с такой проблемой, может кто знает пути выхода из нее....

Массивы. Загрузите программу, проверьте ее исполнение, замените вызов процедуры ввода на вызов присваивания и снова исполните программу
Загрузите программу lab11.pas, проверьте ее исполнение, замените вызов процедуры ввода на вызов...

Вызов скрипта с параметрами скрипта рекурсивно с своими глобальными переменными каждый вызов
Всем привет, есть скрипт у которого глобальные переменные на весь файл. Хочу запустить этот...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru