Прога работает, но неправильно считает

интернет компьютеры с++

#include <stdio.h>
#include <conio.h>
int factor(int n);
void main()
{
int n; // число, факториал которого надо вычислить
int f; // факториал числа n
puts("Вычисление факториала \n");
puts("Введите число, факториал которого надо вычислить");
printf("->");
scanf("%u", &n);
f=factor(n);
printf("” Факториал числа %u равен %u", n, f);
printf("\n Для завершения нажмите <Enter>");
getch();
}
int factor (int k)
{
if (k==0||k==1)
return 1;
else
return k*factor(k-1);
}


Примечание:
Гинз, она то правильно написана, но неправильно считает

Примечание:
то есть мне надо написать double? где? я тормоз)

Примечание:
просто я везде написал double вместо int и "вылет"
Ответы:
А точно правильно флаги в scanf стоят?
Кстати, на моей машинке  всё работает. (gcc4.4.3)
Проверял на билдеровском компиляторе, все работает и считает верно, но только на небольших числах! Например факториал 9 посчитать еще можно, а вот больше уже не считает. Это связано с тем, что вы выбрали неверный тип данных, факториал - число большое, вам нужен как минимум тип double
Ох...
%d - это действительно идентификатор для целых чисел, какой бы целочисленный тип ни имела бы переменная, можете смело использовать ее. Тип long всегда >= типа int, но часто просто равен, особенно под последними версиями Visual Studio. Скажите преподу, что на малых числах работает для long или используйте какой-нить тип вроде INT64 или LONG64 - они реально большие. Определяются в стандартном заголовочном файле basestd.h, кажется, он и так включается в программу. По крайней мере, у меня так в Винде.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.