Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
1

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

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

не могу найти ошибку в программе. задание: Составить программу решения задачи с использованием функций нахождения факториала и числа сочетаний из 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
3653 / 2625 / 594
Регистрация: 08.06.2007
Сообщений: 9,101
Записей в блоге: 4
24.04.2013, 06:15 2
По-моему, так:
C++
1
2
3
4
5
6
double f(double n)
{
    double p=1.0;
    for(int i=2;i<=n;i++) p=p*i;
    return p;
}
1
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 06:46  [ТС] 3
у меня выдает ошибку в строке:
C++
1
double H (double (*f)(double), double m, n)
только я не могу понять что в ней не так.
а про то, что при умножении приравнивается к 1, а не к 0, я действидельно забыла. спасибо. только основную проблему это не решило.

Добавлено через 27 минут
я в панике. она вообще не работает. подскажите пожалуйсто что в ней не так
0
3653 / 2625 / 594
Регистрация: 08.06.2007
Сообщений: 9,101
Записей в блоге: 4
24.04.2013, 06:58 4
А компилятор разве не говорит в чем ошибка? Это не паскаль.
C++
1
double H (double (*f)(double), double m, double n)
1
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 07:28  [ТС] 5
а теперь оно пишет что здесь что-то не так
C++
1
2
3
4
5
6
double f(double n)
{
return {
p=0.0;
for(i=0;i<=n;i++) p=p*i; }
}
может нучно как-то по другому функцию вызова цикла писать??
0
3653 / 2625 / 594
Регистрация: 08.06.2007
Сообщений: 9,101
Записей в блоге: 4
24.04.2013, 07:31 6
После return может следовать выражение и в конце точка с запятой. У вас - не выражение.
Я написал, как должно быть.
1
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 07:38  [ТС] 7
только как тогда сделать вызов функции с циклом вычисления факториала?

Добавлено через 4 минуты
все, исправила=) спасибо
0
Модератор
Эксперт С++
9679 / 8278 / 5050
Регистрация: 18.12.2011
Сообщений: 22,119
24.04.2013, 08:50 8
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
#include<iostream>
#include<math.h>
using namespace std;
int f(int n)
{
      int p=1;
      for(int i=2;i<=n;i++) 
           p=p*i; 
     return p;
}
 
int H (int m,int n)
{
      return f(n)/f(m)/f(n-m);
}
int main()
{ 
    int m,n;
    cout<<"VVedite m, n:";
    cin>>m>>n;
    cout<<H(m,n);
    system("pause");
    return 1;
}
2
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 09:17  [ТС] 9
а можно функцию Н вставить в цикл с вычислением еще и суммы, где m будет заменено на i и будет меняться в цикле i++???
0
Модератор
Эксперт С++
9679 / 8278 / 5050
Регистрация: 18.12.2011
Сообщений: 22,119
24.04.2013, 09:24 10
C++
1
2
3
4
5
...
int S=0;
for(int i=1;i<=m;i++)
  S+=H(i,n);
....
0
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 09:37  [ТС] 11
выдает Н со значением n

Добавлено через 6 минут
по формуле примерно вот так.только в этом случае оно Н не вычисляет, причем не в 1-м, не во 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
#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;
}
0
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 11
24.04.2013, 10:01 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cmath>
 
using namespace std;
 
double fact(int x,int n)
{
    if (n==0) return 1;
    else return x*fact(x,n-1);
}
 
void main()
{
    int n,x;
    cin>>x>>n;
    cout<<fact(x,n);
}
0
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 10:05  [ТС] 13
в таком варианте она вообще не работает
0
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 11
24.04.2013, 10:10 14
Вы на чем компилируете?
0
15 / 21 / 8
Регистрация: 05.04.2013
Сообщений: 204
24.04.2013, 10:56 15
Цитата Сообщение от vasilisa-9090 Посмотреть сообщение
не могу найти ошибку в программе. задание: Составить программу решения задачи с использованием функций нахождения факториала и числа сочетаний из 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);
}
Я вообще новичок, но может лучше глобальные переменные объявить? И почему у тебя здесь double H (double (*f)(double), double m, n) в скобках написано? Так вроде нельзя делать.
0
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 11:32  [ТС] 16
компилирую на борланд 4.5. нас только на нем учат по рограмме.

Добавлено через 1 минуту
а в скобках потому что, это обьявление параметров функции
0
3653 / 2625 / 594
Регистрация: 08.06.2007
Сообщений: 9,101
Записей в блоге: 4
24.04.2013, 12:51 17
Цитата Сообщение от vasilisa-9090 Посмотреть сообщение
а в скобках потому что, это обьявление параметров функции
По хорошему эту информацию вообще не нужно включать в параметры. Она фиксирована. К функции из другой функции можно обращаться непосредственно по имени. Я хотел задать вопрос, зачем вы так делаете, но потом подумал, что это не мое дело, может преподаватель приказал...
0
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 13:07  [ТС] 18
просто мы программы по примеру делаем, а в примере такое обьявление функции. только там нет суммы, формула без факториала. креатив наказуем плохими отметками. увы

Добавлено через 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
#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;
}
Добавлено через 5 минут
а есть какой-нибудь другой вариант вызова этой функции, но чтоб последний параметр m заменить на i??
0
15 / 21 / 8
Регистрация: 05.04.2013
Сообщений: 204
24.04.2013, 13:16 19
Цитата Сообщение от vasilisa-9090 Посмотреть сообщение
а есть какой-нибудь другой вариант вызова этой функции, но чтоб последний параметр m заменить на i??
Приятель, у меня сейчас с головой проблемы, по правде говоря я не понимаю что твоя программа должна делать. Ну факториал найти то не проблема, я не понимаю что там еще требуется. Просто голова гудит туго соображаю)
0
1 / 1 / 1
Регистрация: 30.03.2013
Сообщений: 108
24.04.2013, 14:07  [ТС] 20
Задание звучит так: Составить программу решения задачи с использованием функций нахождения факториала и числа сочетаний из n по m по формуле C(n,m)=n!/(m!*(n-m)!). Нахождение факториала осуществить с помощью вызова подпрограммы. Обчислити вираження для заданих n, x:
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2013, 14:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.