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

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

21.05.2011, 13:39. Показов 10758. Ответов 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 / 1799 / 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
2383 / 1667 / 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
2383 / 1667 / 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
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru