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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.71
Кюи
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 16
#1

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

27.03.2011, 15:15. Просмотров 3134. Ответов 3
Метки нет (Все метки)

Задание в миниатюрах. Перевожу:
Вычислить вероятность появления случайного события ровно 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;
}
Но компилятор ругается...Что можно исправить?
0
Миниатюры
Функции. Факториал.  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2011, 15:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции. Факториал. (C++):

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

Факториал в вычислении элемента функции - C++
как оформить вычисление элемента функции через факториал? например как вычислить значение a=sin(i!) и b=cos (N+i!) вначале написать...

Вычислить факториал заданного числа при помощи рекурсивной функции - C++
Разбирался с рекурсией и вот вдруг возникла проблема. При компиляции выдает совсем не тот результат которые ожидается, ище выдает...

Необходимо вернуть значение функции из Булевского значения и посчитать факториал - C++
Стоит задача- Написато программу которая спрашивает пользователя - Рост, вес, и возраст а затем выдаёт размер одежды по след. формулам: ...

факториал - C++
найти число нулей в конце факториала числа N по основанию каждого множителя K (1&lt;=N&lt;=1000000000, 2&lt;=K&lt;=1000) #include &lt;iostream&gt; ...

факториал в С++ - C++
Как найти факториал с помощью рекурсивной функции?

3
Ma3a
Эксперт С++
618 / 462 / 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 / 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;
}
Теперь получается...А можно как то обойтись без этих трех функций вычисления факториала, на один не получается...
0
Ma3a
Эксперт С++
618 / 462 / 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;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2011, 19:33
Привет! Вот еще темы с ответами:

Факториал - C++
Имеется код: #include &lt;iostream&gt; using namespace std; long long fact(int a); int main() { long long int N;

факториал С++ - C++
Ребята, помогите пожалуйста с факториалом, а то я все не могу понять как сделать так что-бы k1 - факториал, от k до n #include...

Факториал - C++
помогите написать прогу факториала в С++ с помощью циклов. Мне нужна простая прога а не на пол экрана. облазил весь инет, нигде нет...

Факториал с++ - C++
1. Ввести n элементов одномерного массива; 2. Вычислить указанное выражение; 3. Вывести на экран значение указанного выражения.


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
05.04.2011, 19:33
Ответ Создать тему
Опции темы

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