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

факториал в с++

21.05.2011, 13:39. Показов 10307. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано целое число N (>0). Вывести сумму 2 + 1/(2!) +1/(3!)+ ... + 1/(N!) Полученное число является приближеным значением константы е=ехр(1)(=2.71828183).
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2011, 13:39
Ответы с готовыми решениями:

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

факториал
Я только начал изучать С++ и вот столкнулся с проблемой: дано положительное число A>=10.Найти такое число k, что (k-1)!<=A<=k! ...

факториал
Задача: написать 3 функции, считающие факториал неотрицательного целого числа от 0 до 170 3 способами: - с помощью цикла - рекурсивно...

34
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
14.08.2011, 02:22
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Nesnakomez Посмотреть сообщение
\подозреваю это по "?" А сам я не могу понять что это означает, я все-таки зеленый еще....
?: - это тернарный оператор.
логическое выражение ? выражение 1 : выражение 2
Алгоритм работы операции следующий:
1.Вычисляется логическое выражение.
2.Если логическое выражение истинно, то вычисляется выражение 1, иначе — выражение 2.
3.Вычисленное значение возвращается.
1
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.08.2011, 08:52
https://www.cyberforum.ru/post1696571.html
https://www.cyberforum.ru/post1776745.html
Чтобы получить exp, можно найти субфакториал и поделить на него факториал.
Могу на яве код привести... На с++ деление длинных дробей не пробовал реализовывать =(
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.08.2011, 10:07
Цитата Сообщение от diagon Посмотреть сообщение
Т.е. никого не смущает, что 999! не влезет в int?
А мало ли какой они длины? Может какой уникум сделал дефалт их разрядности на много больше килобайта?

Добавлено через 1 минуту
Цитата Сообщение от Nesnakomez Посмотреть сообщение
подскажите, в чем проблема: вычисляю факториал с использованием рекурсии. Результат выдает верный до определенного момента. Если ввести число для вычисления факториала начиная с 13, результат начинает уменьшаться...
Этот глюк зовётся переполнением типа.

Добавлено через 6 минут
Цитата Сообщение от Nesnakomez Посмотреть сообщение
Глобальная переменная: а чем она именно в этом коде мешает?
Она начнёт мешать ровно в тот момент, когда ты, забыв про неё, попытаешься для других целей объявить ещё что нибудь глобальное с тем же именем, найдёшь и уберёшь дублирование декларации, а само использование одной и той же переменной для разных целей и не последовательно (что хоть как то напоминает норму), а вперемешку оставишь. Причём, можешь при этом ещё и тип поменять.

Добавлено через 1 минуту
Кстати почему ни кто не обратил внимание на то, что факториал здесь в знаменателе? Дробь же - явный флоат, а для больших N ещё и приближается к нулю.
0
5 / 5 / 1
Регистрация: 30.07.2011
Сообщений: 257
14.08.2011, 10:22
Цитата Сообщение от !StUdEnT! Посмотреть сообщение
Дано целое число N (>0). Вывести сумму 2 + 1/(2!) +1/(3!)+ ... + 1/(N!) Полученное число является приближеным значением константы е=ехр(1)(=2.71828183).
Это же формула тейлора для экспоненты.
Лови:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
long double taylor(long double x, long double eps)
{
 int i;
 long double rez=1.0, n=1.0;
 do
  {
   n*=x/i;
   rez+=n;   
   i++;
  }
 while (fabs(n)>=eps);
 return rez; 
}
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.08.2011, 13:01
Так еще можно ехр получить...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
unsigned long long fact(unsigned n){
    unsigned long long res = 1;
    for (; n; res *= n--);
    return res;
}
unsigned long long subfact(int n){
    if (n <= 1)
        return 0;
    unsigned long long * arr = new unsigned long long [n + 1];
    arr[2] = 1;
    for (int i = 3; i <= n; ++i)
        arr[i] = arr[i-1] * i + ( i % 2 ? -1 : 1);
    unsigned long long res = arr[n];
    delete[] arr;
    return res;
}
int main(){
    int n = 15;
    std::cout <<  1. * fact(n) / subfact(n);    
}
0
 Аватар для greshnikk
31 / 31 / 8
Регистрация: 05.11.2008
Сообщений: 162
14.08.2011, 13:48
To AvengerAlive: Мне кажется, что большинство, кто отвечают в тему, не читают предыдущих постов. Уже был предложен вариант с Тейлором и я написал это на 2 странице. Читайте пожалуйста все посты, перед тем, как что-либо ответить.
Мой ответ
To diagon: По поводу арифметики длинных чисел, она здесь просто не нужна. Если Вас попросят сложить N раз число M Вы что, так и будете, извините за выражение "в лоб" писать цикл от 0 до N, складывать M с собой, или же просто напишите на выходе N*M ? Здесь знание факториала абсолютно избыточно. Задача стояла найти число Эйлера, а не написать программу, которая выдает N!.
0
 Аватар для Olga_
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
14.08.2011, 14:51
Цитата Сообщение от greshnikk Посмотреть сообщение
Если Вас попросят сложить N раз число M Вы что, так и будете, извините за выражение "в лоб" писать цикл от 0 до N, складывать M с собой, или же просто напишите на выходе N*M
Смотря какие эти M и N. Если используется длинная арифметика, то либо алгоритм Шенхаге-Штрассена надо использовать или, на худой конец, алгоритм Карацубы-Офмана. Так что не все так просто
1
 Аватар для greshnikk
31 / 31 / 8
Регистрация: 05.11.2008
Сообщений: 162
14.08.2011, 18:53
Цитата Сообщение от Olga_ Посмотреть сообщение
Смотря какие эти M и N. Если используется длинная арифметика, то либо алгоритм Шенхаге-Штрассена надо использовать или, на худой конец, алгоритм Карацубы-Офмана. Так что не все так просто
Уверяю Вас, это не имеет абсолютно никакого значения. Чем длинное число отличается от обычного ? С длинными числами, тоже нужно будет делать M*N, а не складывать M, N раз, только представление числа будет другое, логика останется той же.
Но мы отклонились от темы. Своим постом я хотел сказать то, что в данной задаче будет правильно не использовать факториал, по-скольку это плохой подход к задаче.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
14.08.2011, 19:10
Цитата Сообщение от greshnikk Посмотреть сообщение
что в данной задаче будет правильно не использовать факториал, по-скольку это плохой подход к задаче.
Угу. Только ТС свою задачу уже давным давно решил, а Nesnakomez не говорил, что факториал ему нужен для такой же задачи.
0
 Аватар для Olga_
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
14.08.2011, 19:41
Цитата Сообщение от greshnikk Посмотреть сообщение
Уверяю Вас, это не имеет абсолютно никакого значения. Чем длинное число отличается от обычного ? С длинными числами, тоже нужно будет делать M*N, а не складывать M, N раз...
Если бы можно было так взять и перемножить очень длинные числа, которые хранятся не совсем как числа. Уж просто вы это все представляете себе А факториал, конечно, здесь не нужен, это и ребенку понятно
0
0 / 0 / 0
Регистрация: 11.07.2009
Сообщений: 21
14.08.2011, 20:14
Цитата Сообщение от grizlik78 Посмотреть сообщение
Угу. Только ТС свою задачу уже давным давно решил, а Nesnakomez не говорил, что факториал ему нужен для такой же задачи.
для какой такой же? Я изучаю действие рекурсии
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
14.08.2011, 20:22
Цитата Сообщение от Nesnakomez Посмотреть сообщение
для какой такой же?
Которая в первом сообщении темы.
Цитата Сообщение от Nesnakomez Посмотреть сообщение
Я изучаю действие рекурсии
Да я-то догадывался...
0
 Аватар для greshnikk
31 / 31 / 8
Регистрация: 05.11.2008
Сообщений: 162
14.08.2011, 20:22
Цитата Сообщение от grizlik78 Посмотреть сообщение
Угу. Только ТС свою задачу уже давным давно решил, а Nesnakomez не говорил, что факториал ему нужен для такой же задачи.
Если решил, тогда мне все ясно. Спасибо за комментарий.

Цитата Сообщение от Olga_ Посмотреть сообщение
Уж просто вы это все представляете себе
Я прекрасно понимаю что означает термин "длинное число", а также "арифметика длинных чисел".

Раз уж ответ дан, я думаю тему можно закрыть.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.08.2011, 21:07
Цитата Сообщение от Olga_ Посмотреть сообщение
Если бы можно было так взять и перемножить очень длинные числа, которые хранятся не совсем как числа.
Если в столбик умножение делать - просто. Если быстрое преобразование Фурье - сложно, но быстро =)
Целочисленная длинная арифметика в общем-то элементарная, дробная куда сложнее.
0
 Аватар для Olga_
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
15.08.2011, 10:27
Цитата Сообщение от diagon Посмотреть сообщение
Если в столбик умножение делать - просто. Если быстрое преобразование Фурье - сложно, но быстро =)
Целочисленная длинная арифметика в общем-то элементарная, дробная куда сложнее.
Это понятно все. Та реплика была по поводу того, что не стоит все так упрощать а драматизировать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.08.2011, 10:27
Помогаю со студенческими работами здесь

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

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

Факториал
Дано натуральное число n; найти n!. Использовать программу, включающую рекурсивную процедуру вычисления n!

Факториал
Здравствуйте Всем!!! Меня зовут Наталья. Помогите решить задание на С++: Дано натуральное число n; найти n!. Использовать программу,...

Факториал
Элементарный код для того чтобы узнать ФАКТОРИАЛ числа.:D #include &lt;iostream&gt; using namespace std; long long Factorial (int N) { ...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта 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 На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru