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

Функции. Факториал. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.71
Кюи
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 16
27.03.2011, 15:15     Функции. Факториал. #1
Задание в миниатюрах. Перевожу:
Вычислить вероятность появления случайного события ровно m раз в n независимых опытах по формуле Бернулли .... q = 1-p, m, n целые числа; p = действительное положительное число из интервала (0, 1) Нахождение факториала оформить в виде подпрограммы функции.
Кое что я написал:
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
#include <iostream>
#include <conio.h>
#include <math.h>
unsigned long fact1func(unsigned long);
unsigned long fact2func(unsigned long);
unsigned long fact3func(unsigned long);
using namespace std;
int main()
{
    double p,
    q=1-p;
    double P,C;
    unsigned long fact1;
    unsigned long fact2;
    unsigned long fact3;
    int x, m, n;
    cout << "Vvedite n" << "\n";
    cin >> n;
    cout << "Vvedite p (interval (0;1) )" << "\n";
    cin >> p;
    cout << "Vvedite m" << "\n";
    cin >> m;
    x=n-m;
    P=C*(pow(p,m))*(pow(q,n)/pow(q,m));
    fact1 = fact1func(n);
    fact2 = fact2func(m);
    fact3 = fact3func(x);
    C=(fact1)/(fact2*fact3);
    cout << "Podiya P=" << P <<"\n";
    getch();
}
//--------------------------------------------------------
// ГґГіГ*êö³ÿ factfunc()
unsigned long fact1func(unsigned long n)
{
  if(n > 0)
    return n * fact1func(n-1);          //âèêëèê Г±Г*ìî¿ Г±ГҐГЎГҐ
  else
    return 1;
}
//--------------------------------------------------------
// ГґГіГ*êö³ÿ factfunc()
unsigned long fact2func(unsigned long m)
{
  if(m > 0)
    return m * fact2func(m-1);          //âèêëèê Г±Г*ìî¿ Г±ГҐГЎГҐ
  else
    return 1;
}
//--------------------------------------------------------
// ГґГіГ*êö³ÿ factfunc()
unsigned long fact3func(unsigned long x)
{
  if(x > 0)
    return x * fact3func(x-1);     //âèêëèê Г±Г*ìî¿ Г±ГҐГЎГҐ
  else
    return 1;
}
Но компилятор ругается...Что можно исправить?
Миниатюры
Функции. Факториал.  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2011, 15:15     Функции. Факториал.
Посмотрите здесь:

C++ Факториал
C++ Факториал
C++ Факториал
факториал в с++ C++
факториал (2k+1)!с++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
27.03.2011, 18:00     Функции. Факториал. #2
А зачем вам три абсолютно одинаковых функции вычисления факториала?

И еще здесь
C++
1
P=C*(pow(p,m))*(pow(q,n)/pow(q,m));
переменная C еще не инициализирована, то же самое можно сказать и о
C++
1
double p,q=1-p;
переменная p еще не инициализирована, а вы пытаетесь q присвоить значение, использующее p, что , вероятно, и приводит к ошибке.
Кюи
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 16
05.04.2011, 19:12  [ТС]     Функции. Факториал. #3
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
#include <iostream>
#include <conio.h>
#include <math.h>
unsigned long fact1func(unsigned long);
unsigned long fact2func(unsigned long);
unsigned long fact3func(unsigned long);
using namespace std;
int main()
{
    double p,q;
    double P,C;
    unsigned long fact1;
    unsigned long fact2;
    unsigned long fact3;
    int x, m, n;
    cout << "Vvedite n" << "\n";
    cin >> n;
    cout << "Vvedite p (interval (0;1) )" << "\n";
    cin >> p;
    cout << "Vvedite m" << "\n";
    cin >> m;
    x=n-m;
    q=1-p;
    fact1 = fact1func(n);
    fact2 = fact2func(m);
    fact3 = fact3func(x);
    C=(fact1)/(fact2*fact3);
    P=C*(pow(p,m))*(pow(q,n)/pow(q,m));
    cout << "Podiya P=" << P <<"\n";
    getch();
    return 0;
}
//--------------------------------------------------------
// функція factfunc()
unsigned long fact1func(unsigned long n)
{
  if(n > 0)
    return n * fact2func(n-1);          //виклик самої себе
  else
    return 1;
}
//--------------------------------------------------------
// функція factfunc()
unsigned long fact2func(unsigned long m)
{
  if(m > 0)
    return m * fact2func(m-1);          //виклик самої себе
  else
    return 1;
}
//--------------------------------------------------------
// функція factfunc()
unsigned long fact3func(unsigned long x)
{
  if(x > 0)
    return x * fact3func(x-1);     //виклик самої себе
  else
    return 1;
}
Теперь получается...А можно как то обойтись без этих трех функций вычисления факториала, на один не получается...
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
05.04.2011, 19:33     Функции. Факториал. #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
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <conio.h>
#include <math.h>
unsigned long fact1func(unsigned long);
using namespace std;
int main()
{
        double p,q;
        double P,C;
        unsigned long fact1;
        unsigned long fact2;
        unsigned long fact3;
        int x, m, n;
        cout << "Vvedite n" << "\n";
        cin >> n;
        cout << "Vvedite p (interval (0;1) )" << "\n";
        cin >> p;
        cout << "Vvedite m" << "\n";
        cin >> m;
        x=n-m;
        q=1-p;
        fact1 = fact1func(n);
        fact2 = fact1func(m);
        fact3 = fact1func(x);
        C=(fact1)/(fact2*fact3);
        P=C*(pow(p,m))*(pow(q,n)/pow(q,m));
        cout << "Podiya P=" << P <<"\n";
        getch();
        return 0;
}
//--------------------------------------------------------
// функція factfunc()
unsigned long fact1func(unsigned long n)
{
  if(n > 0)
    return n * fact1func(n-1);          //виклик самої себе
  else
    return 1;
}
Yandex
Объявления
05.04.2011, 19:33     Функции. Факториал.
Ответ Создать тему
Опции темы

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