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

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

Войти
Регистрация
Восстановить пароль
 
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
#1

почему выводит 0? - C++

11.12.2013, 16:47. Просмотров 496. Ответов 11
Метки нет (Все метки)

Даны неотрицательные целые числа a, b. Найти F(a, b), где F=(M!+N!)/(M+N)!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 int fact(int n);
int main() {
    cout << "Vvedite 2 chisla = " << endl;
    int n, m, f;
    cin >> n >> m;
    f=(fact(n) - fact(m)) / (fact(n + m));
    cout << f;
   return 0;
}
int fact(int n)
{
    int res = 1;
    for (int i = 1; i <= n; ++i)
    {
        res *= i;
    }
    return res;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2013, 16:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос почему выводит 0? (C++):

Почему не выводит? - C++
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные — в конец с сохранением порядка следования....

почему выводит 0? - C++
Даны неотрицательные целые числа a, b. Найти F(a, b), где F=(M!+N!)/(M+N)! #include &lt;iostream&gt; using namespace std; int fact(int...

Почему не выводит m? - C++
С начала суток прошло N секунд (N — целое). Найти количество полных минут, прошедших с начала суток. #include &lt;iostream&gt; #include...

почему float выводит 0 ? - C++
машинный нуль или в чем проблема? for(i=0; i&lt;k; i++) { t=t*2; } p=(1/t); ...

Почему float выводит 0.0 ? - C++
ПОЧЕМУ р ВЫВОДИТ =0.0 ????? int Rows, Cols; float p; printf(&quot;Vvedite kol-vo strok and colon&quot;); scanf(&quot;%d%d&quot;, &amp;Rows,...

Почему не выводит printf? - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;math.h&quot; #include &quot;locale.h&quot; using namespace std; void main() { ...

11
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
11.12.2013, 17:01 #2
Потому что f типа int, а при делении скорее всего получается значение типа 0.023345, вот он и окргуляет до нуля. К тому в задании у тебя в числителе +, а в коде -.
1
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
11.12.2013, 17:03  [ТС] #3
Цитата Сообщение от Peperovich Посмотреть сообщение
Потому что f типа int, а при делении скорее всего получается значение типа 0.023345, вот он и окргуляет до нуля. К тому в задании у тебя в числителе +, а в коде -.
тогда получается надо заменить на double?
0
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
11.12.2013, 17:03 #4
Да. И поменяй тип возвращаемого значения у fact на double.
1
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
11.12.2013, 17:08  [ТС] #5
а не подскажешь где именно?

Добавлено через 1 минуту
потому что заменяя тип ничего не меняется

Добавлено через 2 минуты
C++
1
2
3
4
5
cout << "Vvedite 2 chisla = " << endl;
    int n, m;
    double f;
    cin >> n >> m;
    f=(fact(n) - fact(m)) / (fact(n + m));
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 864
Записей в блоге: 1
11.12.2013, 17:11 #6
Цитата Сообщение от kornelyk Посмотреть сообщение
а не подскажешь где именно?

Добавлено через 1 минуту
потому что заменяя тип ничего не меняется

Добавлено через 2 минуты
C++
1
2
3
4
5
cout << "Vvedite 2 chisla = " << endl;
    int n, m;
    double f;
    cin >> n >> m;
    f=(fact(n) - fact(m)) / (fact(n + m));

C++
1
2
3
double f;
   
    f=(double)(fact(n) - fact(m)) / (fact(n + m));
Либо
C++
1
double fact(int n)
2
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
11.12.2013, 17:11 #7
Выше написал, поменяй у функции которая вычисляет факториал на double.
2
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
11.12.2013, 17:12  [ТС] #8
вот про тип возвращаемого значения не понятно

Добавлено через 46 секунд
спасибо всем огромное!!
0
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
11.12.2013, 17:14 #9
Да, что не понятно, тут либо как DmitryM5 написал сделать, т.е. преобразовать к double, либо сделать чтобы функция double возвращала. Иначе у тебя int / int, вот и приводится результат к int.
1
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
11.12.2013, 17:17  [ТС] #10
C++
1
double fact(int n)
так не работает
а с double перед самими примером все отлично)
0
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
11.12.2013, 17:33 #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 double fact(int n);
int main()
{
        cout << "Vvedite 2 chisla = " << endl;
        int n, m;
        double f;
        cin >> n >> m;
        f=(fact(n) + fact(m)) / (fact(n + m));
        cout << f;
        return 0;
}
double fact(int n)
{
        int res = 1;
        for (int i = 1; i <= n; ++i)
        {
                res *= i;
        }
        return res;
}
Выхлоп:почему выводит 0?
1
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 864
Записей в блоге: 1
11.12.2013, 17:43 #12
Цитата Сообщение от kornelyk Посмотреть сообщение
C++
1
double fact(int n)
так не работает
а с double перед самими примером все отлично)
Должно работать,что-то вы не так делаете.
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
#include <iostream>
 
using namespace std;
 
 double fact(int n);
 
int main() {
    cout << "Vvedite 2 chisla = " << endl;
    int n, m;
    double f;
    cin >> n >> m;
    f=(fact(n) - fact(m)) / (fact(n + m));
    cout << f<<endl;
    system("pause");
   return 0;
}
double fact(int n)
{
    double res = 1;
    for (int i = 1; i <= n; ++i)
    {
        res *= i;
    }
    return res;
}
Добавлено через 4 минуты
to Peperovich
Получается все равно что res типа int, а функция возвращает double...
Видно неявное приведение типа происходит,ну да ладно.
1
11.12.2013, 17:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2013, 17:43
Привет! Вот еще темы с ответами:

Почему не выводит строки? - C++
Здравствуйте. Задание состоит в том,чтобы выделить имя,т.е второе слово строки (первое слово-фамилия). В массив строк вводится фамилия и...

Почему выводит адреса? - C++
Всем привет! Программа работает, но почему то выводит данные вместе с адресом (см. скриншот). Скажите, почему так? #include&lt;iostream&gt; ...

Выводит не правильно, почему? - C++
#include&quot;conio.h&quot; #include&quot;stdlib.h&quot; #include&quot;stdio.h&quot; #include&quot;math.h&quot; int main() { float x,y,r; r=0.1+x; printf(&quot;Input...

Почему выводит всегда 0? - C++
Почему при любом значении k выводится 0? #include &lt;iostream&gt; using namespace std; void main() { double k, j, i; ...


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

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

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