Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2008, 18:28   #1
slog
 
Регистрация: 23.11.2008
Сообщений: 9
По умолчанию Факториал в C++

Используя операторы циклов, организовать необходимый поиск и вычисления. Тип
результата определяется из контекста задачи.
Дано натуральное число n. Вычислить 1! + 2! + … + n!.

C++ под DOS
Код:
#include<stdio.h>
#include<conio.h>
void main (void)
{
int s,i,n, fact(int i); 
clrscr();
for i:=1 to n do
      s:=s+fact(i);
    printf();
getch();
}
незнаю как вызвать функцию... помогите.. что не хватает в коде и верен ли он? как его исправить можно? спасибо.
slog вне форума Ответить с цитированием
Старый 03.12.2008, 07:28   #2
DarkAsmodey
Пользователь
 
Регистрация: 15.02.2008
Сообщений: 18
По умолчанию

Уууу... а это на каком языке? сипаскаль???
DarkAsmodey вне форума Ответить с цитированием
Старый 03.12.2008, 07:56   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Сообщение от DarkAsmodey Посмотреть сообщение
Уууу... а это на каком языке? сипаскаль???
Да, правда что-то совершенно непонятное.

Я бы прогу написал так.

Код:
int main()
{
int i,sum=0, fact=1, n;
cin>>n;
for (i=1; 1<=n; i++)
   {
   sum = sum + fact;
   fact=fact*i;
   }
}
Вот и вся функция. если вам надо, что бы i афкториал вычисляла отдельная функция (что в данном случае излишне), то код быдет выглядеть так:

Код:
int fact(nfact,i); // прототип функции, обязатльно нужен, елси функция
// используется до того, как выполнено ее описание

int main()
{
int i,sum=0,n;
cin>>n;
for (i=1; 1<=n; i++)
   {
   sum = sum + fact(int nfact, int i);
   fact=fact*i;
   }
}

int fact(int nfact,int i)

{
nfact = nfact *i;
return nfact;
}
К стати, если не ошибаюсь запись типа
Код:
sum = sum + fact;
fact=fact*i;
можно записать в виде
Код:
sum+= fact;
fact*=i;
Еще порекомендую поискать способ избежать переполнения памяти, иначе большие ичсла вводить тебе не удастся. (по моему, еслип амять не изменяет, мкксимальное значение int в 16-разрядных системах шестьдесят с чем-то тысяч, т.е. 12! уже больше допустимого), либо использоать большие переменные, типа long int, хотя это тоже не сильно исправит ситуацию.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 03.12.2008 в 08:06.
ROD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Факториал с рекурсией SaimaN Помощь студентам 2 24.09.2008 17:53
Факториал Killbrum Софт 14 13.08.2008 00:34
Факториал числа в Delphi Prisian Общие вопросы Delphi 16 24.01.2008 13:23
Факториал числа (циклы) Sargon Общие вопросы C/C++ 2 14.01.2008 02:25
Факториал от дробного числа RIO Помощь студентам 11 26.12.2007 18:36