Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/163: Рейтинг темы: голосов - 163, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 75

Функция вычисления факториала

26.07.2017, 19:42. Показов 31880. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите функцию, которая

называется Factorial
возвращает int
принимает int и возвращает факториал своего аргумента. Гарантируется, что аргумент функции по модулю не превышает 10. Для отрицательных аргументов функция должна возвращать 1.

stdin => stdout
1 => 1
-2 => 1
4 => 24

Пояснение

В этой задаче на проверку вам надо прислать файл с реализацией функции Factorial. Этот файл не должен содержать функцию main. Если в нём будет функция main, вы получите ошибку компиляции.



к этой задаче я написал вот такой вот код, программа не выдает корректные значения. Что не так в коде я не знаю. Прошу вас подсказать мне пока новичку в этом.(я просматривал темы где описывается принцип реализации программы по вычислению факториала числа).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
int Factorial(int& f){
    int i = 1;
 
    if (f >= -10 && f <= 10){
    for (i = 1; i<=f ; i++ ){
        f *=i;
    }
    }else {
        cout << 1;
    }
    return f;
 
 
}
int main (){
    int a;
    cin >> a;
    Factorial (a);
    cout << a;
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.07.2017, 19:42
Ответы с готовыми решениями:

Функция вычисления факториала
помогите написать функцию вычисления (n!+k!) и (n+1)!

Функция вычисления факториала
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; int main()...

Функция для вычисления факториала
определить функцию вычисления факториала числа. Рассчитать с помощью нее: 2x5! + 3x9! \ 7! +10! помогите пожалуйста с программой в С++ ...

8
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
26.07.2017, 19:52
у вас 21 возможный вариант входных данных. можно проверить для каждого корректность ответа, если так не видите проблем.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
26.07.2017, 19:53
Цитата Сообщение от Albatrosso Посмотреть сообщение
if (f >= -10 && f <= 10)
C++
1
2
3
4
5
6
7
//При отрицательном значении f выбросит на цикл. А по условию задачи должно вернуть единицу.
    if (f >= -10 && f <= 10){
    //в условии цикла значится f
    for (i = 1; i<=f ; i++ ){
        //в теле цикла меняется тот же f. Граблями по лбу на!
        f *=i;
    }
0
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
26.07.2017, 19:58
Albatrosso, ошибка в if, вы считаете факториал и отрицательных чисел. И функция ваша должна только возвращать,а не печатать, никаких cout
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>
using namespace std;
int Factorial( const int& f){ / / защита от быдло-модификации
    int i = 1;
    int ans = 1 ;
    if ( f > 0){
    for (i = 1; i<=f ; i++ ){ 
        ans *=i;
    }
    return ans;
    }else {
        return 1
    }
    
 
 
}
int main (){
    int a;
    cin >> a;
    
    cout << Factorial(a);
    return 0;
}
И ещё сказано,что main должен отсутствовать. Попробуйте отправить весь код до int main();
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
26.07.2017, 20:00
Ну и для такой задачи, лучшее решение - по табличке. Но ага, ага, не спортивно.
C++
1
2
3
4
5
6
int Factorial(int f)
{
    static const int res[]={1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                            1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800};
    return res[f+10];
}
1
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
26.07.2017, 20:05
Лучший ответ Сообщение было отмечено Albatrosso как решение

Решение

Albatrosso, хотфикс ошибок
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>
using namespace std;
int Factorial( const int& f){ // защита от быдло-модификации
    int i = 1;
    int ans = 1 ;
    if ( f > 0){
    for (;i<=f ; i++ ){ 
        ans *=i;
    }
    return ans;
    }else {
        return 1;
    }
    
 
 
}
int main (){
    int a;
    cin >> a;
    
    cout << Factorial(a);
    return 0;
}
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
26.07.2017, 20:11
Alex0x0000058,
Цитата Сообщение от Alex0x0000058 Посмотреть сообщение
хотфикс ошибок
Тогда уж обратите внимание, что
Цитата Сообщение от Alex0x0000058 Посмотреть сообщение
if ( f > 0){
излишне,
т.к. i<=f при f<=0 даст false
1
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 75
30.07.2017, 19:45  [ТС]
По условию задачи необходимо указать, что вводимое значение не может быть больше 10 по модулю. Это указывается при помощи какого оператора ? if или for ?
C++
1
if (10 > f)
C++
1
for (;10>f;)
0
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
30.07.2017, 22:36
Albatrosso, это вам автор задачи гарантирует, что на вход не поступит число, больше чем |10|. Вообще, если вы хотите сделать такую проверку , то как-то так
C++
1
2
3
4
if ( abs(f) > 10) { //abs -- модуль из cmath
   cout << "It's prohibited, GTFO!"<<endl;
   exit (100) ;// мгновенно завершит исполнение всей программы (не только данного блока или функции и вернёт переданное число . Из cstdlib
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2017, 22:36
Помогаю со студенческими работами здесь

Рекурсивная функция вычисления факториала
Напишите рекурсивную функцию int factorial(int n), которая считает факториал. примеры 1)5 120 2)0 1 3)2 2

Рекурсивная функция вычисления факториала
ребята, можно еще вопрос? int func(int c){ int r; r*=c; if(c==1){return r;} else{return func(c-1);}

Рекурсивная функция вычисления факториала
В коде #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;fact.h&quot; int main() { using namespace std; cout&lt;&lt;&quot;Enter the...

Рекурсивная функция вычисления факториала: переполнение стека
Учусь работать с рекурсией, но почему то в коде преполнение стека и все программа виснет и вылетает в чем проблема код следующий. ...

Напишите программу вычисления суммы: 1! + 2! + 3! + … + n!, используя функцию вычисления факториала числа k.
Напишите программу вычисления суммы: 1! + 2! + 3! + … + n!, используя функцию вычисления факториала числа k. И вновь заранее благодарю,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru