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

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

Восстановить пароль Регистрация
 
venom_
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 8
28.10.2012, 23:40     вычисляет факториал только до 7! #1
Добрый вечер! Не могу понять, почему прога правильно считает факториал только до 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!
Посмотрите здесь:

Написать программу, которая вычисляет факториал неотрицательных целых чисел n C++
Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие C++
. Составить программу, которая вычисляет факториал числа n, введенного с клавиатуры C++
Как использовать двойной факториал в С++ с использованием только if и for? C++
Факториал. Использовать только одну функцию main и только один цикл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.10.2012, 23:44     вычисляет факториал только до 7! #2
возможно int в этой старой версии имеет размер всего лишь 16 бит?
prosto_lynx
 Аватар для prosto_lynx
49 / 24 / 1
Регистрация: 09.06.2008
Сообщений: 225
28.10.2012, 23:46     вычисляет факториал только до 7! #3
по всей видимости k - 16-ти битное число... соответственно от -32767 до +32768...
Поэтому 8! уже попадает в отрицательные значения.
venom_
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 8
28.10.2012, 23:47  [ТС]     вычисляет факториал только до 7! #4
а какой тип тогда использовать? подставлял long - результат такой же самый
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.10.2012, 23:50     вычисляет факториал только до 7! #5
Цитата Сообщение от venom_ Посмотреть сообщение
Borland C++ 3.1, DosBox 0.73
используй среду новее или считай в double
venom_
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 8
28.10.2012, 23:50  [ТС]     вычисляет факториал только до 7! #6
прошу прощения, с типом long все работает. Спасибо за помощь.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
28.10.2012, 23:52     вычисляет факториал только до 7! #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  [ТС]     вычисляет факториал только до 7! #8
с типом long программа считает уже до 12!=479001600 дальше уже неправильно 13!=1932053504, а должно быть 6227020800.
Подскажите пожайлуста, какой параметр поставить в main?

Добавлено через 9 минут
все нашел- максимальное значение типа long - 2147483647
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
29.10.2012, 00:32     вычисляет факториал только до 7! #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го утра
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2012, 00:49     вычисляет факториал только до 7!
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
29.10.2012, 00:49     вычисляет факториал только до 7! #10
самое большое что есть, это unsigned long long(целочисленное)
Yandex
Объявления
29.10.2012, 00:49     вычисляет факториал только до 7!
Ответ Создать тему
Опции темы

Текущее время: 09:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru