Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
venom_
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 8
1

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

28.10.2012, 23:40. Просмотров 544. Ответов 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2012, 23:40
Ответы с готовыми решениями:

Напишите программу, которая вычисляет факториал числа
Напишите программу, которая вычисляет факториал числа п. N должен быть введен с...

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

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

Написать программу, которая вычисляет факториал неотрицательных целых чисел n
//3. Дано натуральное число n. Написать программу, которая вычисляет факториал...

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

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

Добавлено через 9 минут
все нашел- максимальное значение типа long - 2147483647
0
MrGrig
177 / 160 / 38
Регистрация: 08.10.2012
Сообщений: 423
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го утра
0
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
29.10.2012, 00:49 10
самое большое что есть, это unsigned long long(целочисленное)
0
29.10.2012, 00:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2012, 00:49

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

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

Найти факториал числа, пользуясь только указателями
В общем задание - &quot;Найти факториал числа, пользуясь только указателями.&quot; Код...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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