Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 02.12.2008, 19:28   #1
slog
 
Регистрация: 23.11.2008
Сообщений: 9
Репутация: 10
По умолчанию Факториал в 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, 08:28   #2
DarkAsmodey
Пользователь
 
Регистрация: 15.02.2008
Сообщений: 18
Репутация: 10
По умолчанию

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

icq: 380871124
skype: russian_pinky
По умолчанию

Цитата:
Сообщение от 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 в 09:06.
ROD вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


10:17.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.