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

Найти факториал заданного числа (неправильный ответ при вводе числа > 13)

15.10.2021, 12:48. Показов 1175. Ответов 8

Студворк — интернет-сервис помощи студентам
Дано целое число n, нужно найти n!
Код составлен. Он считает правильно до 13, а после 13 выдает ложный ответ. В чем проблема?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
int main()
{
    int factorial = 1;
    int i;
    int n;
    cin >> n;
    for (i = 1; i <= n; i = i + 1)
        factorial = factorial * i;
    cout << "factorial=" << factorial << endl;
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2021, 12:48
Ответы с готовыми решениями:

При делении отрицательного числа выводит неправильный ответ. Если беру числа 127 13 10, пишет переполнение
; (a+b)/c-2 _stack segment STACK dw 256 dup(0) _stack ends _data segment msgA db 10, 13, &quot;Input number A (-128..127): $&quot;...

Рассчитать факториал заданного числа (Пример: для «5» ответ будет равен 5*4*3*2*1 = 120)
Процедура Нахождениефакториала() перем а,б,в,д; ВвестиСтроку(а, &quot;Введите число для расчета факториала&quot;); Если а&lt;&gt;0...

Программа при запуске и вводе данных выдаёт неправильный ответ
Программа при запуске и вводе данных выдаёт неправильный ответ (огромное число) #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

8
2743 / 1669 / 269
Регистрация: 19.02.2010
Сообщений: 4,420
15.10.2021, 12:56
Цитата Сообщение от Smthstrange Посмотреть сообщение
В чем проблема?
Результат не влазит в 32битное целое.
Поменяй у переменной тип на long long или на __int64
1
1 / 1 / 0
Регистрация: 20.05.2020
Сообщений: 75
15.10.2021, 12:59  [ТС]
спасибо!
0
2743 / 1669 / 269
Регистрация: 19.02.2010
Сообщений: 4,420
15.10.2021, 13:11
Smthstrange, рано радуешься.
64битное целое переполнится при 21!
0
1 / 1 / 0
Регистрация: 20.05.2020
Сообщений: 75
15.10.2021, 13:12  [ТС]
а как это исправить?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.10.2021, 14:05
Smthstrange, заменой типа можно довести до 25, если нужно больше смотрите в сторону работы с большими числами (длинная арифметика)

но вряд ли это от Вас требуется. просто замените тип и ограничьте ввод n
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6241 / 2954 / 1047
Регистрация: 01.06.2021
Сообщений: 10,979
15.10.2021, 14:06
Лучший ответ Сообщение было отмечено Royal_X как решение

Решение

Цитата Сообщение от Smthstrange Посмотреть сообщение
а как это исправить?
можешь считать так

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
   double n; cin >> n;
   long double f = tgammal(n + 1.);
   cout << f;
}
посчитает до 1754!, но все цифры не увидишь, результат будет с плавающей запятой
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.10.2021, 14:10
Цитата Сообщение от Smthstrange Посмотреть сообщение
i = i + 1
можно записать так: i++
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6241 / 2954 / 1047
Регистрация: 01.06.2021
Сообщений: 10,979
15.10.2021, 14:14
Цитата Сообщение от Yetty Посмотреть сообщение
можно так: i++
в данном случае можно использовать ++i, вместо i++
префиксные инкременты и декременты производительнее постфиксных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.10.2021, 14:14
Помогаю со студенческими работами здесь

Найти факториал числа заданного условием
Вычислить R=p! , где p третье по счету число ,делящееся на 9 в диапазоне от M1 до M2 Давайте своим темам осмысленные названия!

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

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

Найти все числа, образованные при перестановке цифр заданного числа
Дано натуральное трехзначное число, в котором все цифры разные. Найти все числа, образованные при перестановке цифр заданного числа.

Определение простоты числа (функция возвращает неправильный ответ)
Программа получает на вход число x и должна определить, является ли данное число простым. Написана программа, но для числа 155 выдаёт...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru