Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
venom_
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 8
#1

вычисляет факториал только до 7! - C++

28.10.2012, 23:40. Просмотров 486. Ответов 9
Метки нет (Все метки)

Добрый вечер! Не могу понять, почему прога правильно считает факториал только до 7!=5040, а дальше почему то 8!=-25216, 9!=-30336 и т.д.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream.h>
#include <conio.h>
#include <math.h>
main()
{
int k=1,n=9,i=2;
while (n>0)
k*=n--;
cout<<k<<"\n";
getch();
}
Borland C++ 3.1, DosBox 0.73
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2012, 23:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос вычисляет факториал только до 7! (C++):

Напишите программу, которая вычисляет факториал числа - C++
Напишите программу, которая вычисляет факториал числа п. N должен быть введен с клавиатуры. Программа должна вывести также &quot;малый&quot;, если...

Разработать программу, которая вычисляет факториал и состоит из функций - C++
я ее сделал но меня есть вопрос: 1. я сделал массив из ста элементов, а можно его сделать полностью динамический чтобы пользователь...

Факториал. Использовать только одну функцию main и только один цикл - C++
задача вообщем простая, но условия осложняют: \sum_{i=0}^{n-1} {x}_{i}/i! использовать только одну функцию main и только один...

. Составить программу, которая вычисляет факториал числа n, введенного с клавиатуры - C++
Есть такая задача: которая находит сумму чисел от 1 до n, где n – вводится с клавиатуры. вот код: #include...

Написать программу, которая вычисляет факториал неотрицательных целых чисел n - C++
//3. Дано натуральное число n. Написать программу, которая вычисляет факториал неотрицательных целых чисел n (т.е. число целое и больше 0)....

Напишите функцию, которая вычисляет факториал для заданного натурального числа - C++
аголовок функции должен быть следующим: int factorial(int n); Напишите программу, которая получает от пользователя два натуральных числа a...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.10.2012, 23:44 #2
возможно int в этой старой версии имеет размер всего лишь 16 бит?
prosto_lynx
49 / 24 / 1
Регистрация: 09.06.2008
Сообщений: 226
28.10.2012, 23:46 #3
по всей видимости k - 16-ти битное число... соответственно от -32767 до +32768...
Поэтому 8! уже попадает в отрицательные значения.
venom_
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 8
28.10.2012, 23:47  [ТС] #4
а какой тип тогда использовать? подставлял long - результат такой же самый
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
28.10.2012, 23:50 #5
Цитата Сообщение от venom_ Посмотреть сообщение
Borland C++ 3.1, DosBox 0.73
используй среду новее или считай в double
venom_
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 8
28.10.2012, 23:50  [ТС] #6
прошу прощения, с типом long все работает. Спасибо за помощь.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
28.10.2012, 23:52 #7
Цитата Сообщение от I.M. Посмотреть сообщение
возможно int в этой старой версии имеет размер всего лишь 16 бит?
ну это на грани фантастики
При этом в стандарте языка C++ не оговаривается конкретный размер каждого из вышеперечисленных типов, для каждого компилятора они могут быть своими. Приведенные выше числа верны для компиляторов GCC, MS VC++, а вот для Borland C++ версии 3.1 размер переменной типа int — 2 байта.
© Теоретический материал (С++)
возможно ошибка кроется в том что мэйн у вас без параметра и компилятор почему то это скушал
venom_
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 8
29.10.2012, 00:19  [ТС] #8
с типом long программа считает уже до 12!=479001600 дальше уже неправильно 13!=1932053504, а должно быть 6227020800.
Подскажите пожайлуста, какой параметр поставить в main?

Добавлено через 9 минут
все нашел- максимальное значение типа long - 2147483647
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
29.10.2012, 00:32 #9
Цитата Сообщение от venom_ Посмотреть сообщение
Подскажите пожайлуста, какой параметр поставить в main?
ну хотя бы
C++
1
2
void main(){
}
или
C++
1
2
3
int main(){
return 0;
}
или
C++
1
2
3
int main(void){
return 0;
}
борланд реально мэйн без типа схавал?

Добавлено через 9 минут
Цитата Сообщение от MrGrig Посмотреть сообщение
ну это на грани фантастики
При этом в стандарте языка C++ не оговаривается конкретный размер каждого из вышеперечисленных типов, для каждого компилятора они могут быть своими. Приведенные выше числа верны для компиляторов GCC, MS VC++, а вот для Borland C++ версии 3.1 размер переменной типа int — 2 байта.
© Теоретический материал (С++)
переврал сам себя действительно 16 бит есть 2 байта чтож поделаешь пол 4го утра
ZaMaZaN4iK
Мой лучший друг-отладчик!
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
29.10.2012, 00:49 #10
самое большое что есть, это unsigned long long(целочисленное)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2012, 00:49
Привет! Вот еще темы с ответами:

Как использовать двойной факториал в С++ с использованием только if и for? - C++
Код определяет четность или нечетность числа. Как в этой же программе вычислить двойной факториал введенного числа? МОЖНО...

Найти факториал числа, пользуясь только указателями - C++
В общем задание - &quot;Найти факториал числа, пользуясь только указателями.&quot; Код написал, но не могу понять в чем ошибка. (Error 1 error...

Написать программу, которая находит факториал числа пользуясь только указателями - C++
Написать программу, которая находит факториал числа пользуясь только указателями (использовать только динамическую память).

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.10.2012, 00:49
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru