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

факториал

01.09.2012, 19:21. Показов 3789. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
сумма факториалов
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2012, 19:21
Ответы с готовыми решениями:

Факториал. Определить максимальное число, факториал которого хранится в переменной типа int
/*Доброго времени суток ! Задача такова: Пользователь вводит число с клавы. Вывести на экран факториал этого числа. Определить...

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

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

24
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
01.09.2012, 19:22
Цитата Сообщение от ulx05 Посмотреть сообщение
факториал
сумма факториалов
и что дальше? подробнее опиши
0
1 / 1 / 1
Регистрация: 17.07.2012
Сообщений: 139
01.09.2012, 19:23  [ТС]
вычислить сумму : 1+1/1!+1/2!+1/3!+...+1/n!. значение n вводится с клавиатуры: 1<n>=10
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
01.09.2012, 19:28
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>
 
int fact (int n)
{
    if (n == 0 || n == 1)
        return 1;
    return fact(n-1) * n;
}
 
int main()
{
    double result = 1;
    int n;
    std:: cin >> n;
 
    for (int i=0; i<n; ++i)
        result += 1.0/fact(i);
    
    std:: cout << std::fixed << result << std::endl;
    system ("pause");
    return 0;
}
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.09.2012, 12:33
находим множитель рекурентного соотношения
Code
1
2
3
4
5
1 / n!  :  1 / (n - 1)!
 
(n - 1)! / n!
 
(n - 1)! / ((n - 1)! * n) = 1 / n


C++
1
2
3
4
5
6
7
8
  double sum;
  int n, i;
   
  n = 1000;
  
  sum = 1;
  for (i = 2; i <= n; i++)
      sum /= i;
2
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
02.09.2012, 12:39
accept, находим множитель рекурентного соотношения. Не могли бы вы подробнее про это рассказать?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.09.2012, 12:42
берётся формула n-ого члена и делится на формулу (n-1)-го члена
что получилось - то является множителем, на который нужно домножать член последовательности, чтобы получить следующий за ним член

а вообще, этот ряд даёт число e
2
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
02.09.2012, 12:48
accept, ответ не сходится - мой код ваш код
(в моем коде правка есть - не for (int i=0; i<n; ++i), а for (int i=1; i<=n; ++i)
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
02.09.2012, 12:58
Цитата Сообщение от Dani Посмотреть сообщение
ответ не сходится - мой код ваш код
(в моем коде правка есть - не for (int i=0; i<n; ++i), а for (int i=1; i<=n; ++i)
у тебя ошибка, все сходится
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
02.09.2012, 13:02
Jupiter, 2.71828 и 2.75573
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
02.09.2012, 13:27
Цитата Сообщение от Jupiter Посмотреть сообщение
у тебя ошибка, все сходится
не совсем, правильнее будет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
int main()
{
   double sum = 1.0, first = 1.0;
   int n = 2;
   
   for (int i = 1; i <= n; i++)
   {
       first /= i;
       sum += first;      
   }
      
   std::cout << sum;
   return 0;
 }
2
02.09.2012, 13:37

Не по теме:

valeriikozlov, чем правильнее?

0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
02.09.2012, 13:43
Цитата Сообщение от Jupiter Посмотреть сообщение
Не по теме:
valeriikozlov, чем правильнее?
при условии задачи:
Цитата Сообщение от ulx05 Посмотреть сообщение
вычислить сумму : 1+1/1!+1/2!+1/3!+...+1/n!. значение n вводится с клавиатуры: 1<n>=10
при n==2 должно выдать 2.5 (вручную можно посчитать)
код, на который Вы ссылаетесь: http://liveworkspace.org/code/... 97f64f1a22
выдает: 2
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
02.09.2012, 15:49
Цитата Сообщение от ulx05 Посмотреть сообщение
1+1/1!+1/2!+1/3!+...+1/n!.
- а проще всего не парится, а сразу написать:

C++
1
cout << exp(1) << endl;
эта сумма равна числу e c приличной точностью.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.09.2012, 18:17
В компайл тайм:
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
#include <iostream>
#include <ratio>
#include <cstdint>
 
template < int i >
struct Factorial
{
    static const std::uint64_t value = i * Factorial< i - 1 >::value;
};
 
template <>
struct Factorial< 1 >
{
    static const int value = 1;
};
 
template < int i >
class Sum
{
private:
    typedef std::ratio < 1, Factorial< i >::value > current;
 
public: 
    typedef std::ratio_add< current, typename Sum< i - 1 >::value > value;
};
 
template <>
class Sum< 1 >
{
public:
    typedef std::ratio< 1, 1 > value;
};
 
int main()
{
   constexpr int n = 10;
    
   typedef typename Sum< n >::value result_ratio;
    
    constexpr std::uint64_t num = result_ratio::num;
    constexpr std::uint64_t den = result_ratio::den;
    std::cout << static_cast< double > (num) / den + 1 << std::endl;
}
Результат: http://liveworkspace.org/code/... 46a8d75511
1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
02.09.2012, 19:30
Цитата Сообщение от accept Посмотреть сообщение
берётся формула n-ого члена и делится на формулу (n-1)-го члена
что получилось - то является множителем, на который нужно домножать член последовательности, чтобы получить следующий за ним член
вообще то ты описал геометрическую прогрессию
здесь не канает
смотри
1/1! 1/2! разница в 1/2
1/2! 1/3! разница в 1/3
1/3! 1/4! разница в 1/4
т.е каждый раз множитель разный

Добавлено через 4 минуты
Цитата Сообщение от accept Посмотреть сообщение
C++
1
2
3
sum = 1;
 for (i = 2; i <= n; i++)
 sum /= i;
а где здесь сумма???
можно без цикла написать
sum /= n;

Добавлено через 1 минуту
Цитата Сообщение от accept Посмотреть сообщение
а вообще, этот ряд даёт число e
а здесь согласен
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.09.2012, 01:11
Цитата Сообщение от ValeryS Посмотреть сообщение
вообще то ты описал геометрическую прогрессию
это я забыл сложить их

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int main()
{
    double sum, yi;
    int n, i;
   
    n = 1000;
  
    sum = yi = 1;
    for (i = 1; i <= n; i++) {
        yi /= i;
        sum += yi;
    }
    
    cout << sum << endl;
    
    return 0;
}
Code
1
2
3
4
[guest@localhost tests]$ .iso++ t.cpp -o t
[guest@localhost tests]$ ./t
2.71828
[guest@localhost tests]$
Добавлено через 3 минуты
Цитата Сообщение от Catstail Посмотреть сообщение
- а проще всего не парится, а сразу написать:
не, это понятно, просто рядов есть множество
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.09.2012, 15:25
Для интереса приведу такую формулу:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{k=0}^n\frac{1}{k!} =\frac{|n!\cdot e|}{n!}, где | | - целая часть числа (скобки [] почему-то в формулах не отображаются).
В программировании она почти не применима, так как число e трансцендентно, но теоретически интересна.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
03.09.2012, 17:40
Цитата Сообщение от Thinker Посмотреть сообщение
трансцендентно
- если быть более точным, потому, что e - иррационально (т.е. непериодическая бесконечная дробь). А то, что e трансцендентно, не играет роли.
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.09.2012, 20:09
Цитата Сообщение от Catstail Посмотреть сообщение
e - иррационально... А то, что e трансцендентно, не играет роли.
Вы просто забыли утверждение: каждое трансцендентное вещественное число является иррациональным, которое легко доказывается. А вот обратное неверно, например число https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{2} иррационально, но не трансцендентно. Так что число e обладает более сильным свойством, нежели просто иррациональность.

Вообще трасцендентных чисел бесконечно много, но поиск их крайне проблематичен. А с иррациональными числами гораздо проще. Интересна в этом плане теория Галуа, где понятие трансцендентности вводится исходя из расширений полей. В частности, это еще один метод доказательства алгебраической замкнутости поля комплексных чисел.

Так что с трансцендентностью и алгебраичностью не стоит так небрежно. Теория Галуа описывает все конечные поля с точностью до изоморфизма, которые крайне важны для шифров с открытыми ключами, особенно для шифров на эллиптических кривых. А не было бы эллиптических кривых, то пришлось бы использовать кольца вычетов по очень большим модулям, что снижало бы очень их производительность.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.09.2012, 20:09
Помогаю со студенческими работами здесь

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

Факториал
Помогите написать программу: Составить функцию, которая вычисляет сумму К слагаемых. В вызывающей функции main() организовать контроль...

Факториал
Мой друг дал мне код вычисление факториала на языке СИ++: Он следующий: #include &lt;fstream&gt; #include &lt;cstdio&gt; ...

факториал в с++
Дано целое число N (&gt;0). Вывести сумму 2 + 1/(2!) +1/(3!)+ ... + 1/(N!) Полученное число является приближеным значением константы...

Факториал
Пожалуйсто, помогите написать прогу на Си, которая вичисляла бы 100! (факториал) выводя всё на экран!


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru