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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2014, 21:50   #1
reijii_nia
Пользователь
 
Регистрация: 29.03.2014
Сообщений: 19
Печаль составить программу вычисляющую значение выражения N!(M! +(N-M)!) с помощью цикла for (язык C)

дали задание
составить программу вычисляющую значение выражения N!(M! +(N-M)!) с помощью цикла for
reijii_nia вне форума Ответить с цитированием
Старый 29.03.2014, 22:15   #2
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

вычисляешь отдельно (N-M)! ,N! и M!..потом все вместе...
а факториал с помощью оператора цикла for можно реализовать таким образом:

Код:
            int result = 1;
            for (int i = 1; i <=(N-M);i++ )
            {
                result *= i;
            }
Sergey_gorobets вне форума Ответить с цитированием
Старый 29.03.2014, 22:17   #3
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
Вопрос

Цитата:
вычисляешь отдельно (N-M)! ,N! и M!..потом все вместе...
Зачем?
Код:
result:=Factorial(N)*(Factorial(M)+Factorial(N-M));
Код для функции Factorial здесь.

Последний раз редактировалось Streletz; 29.03.2014 в 22:22.
Streletz вне форума Ответить с цитированием
Старый 29.03.2014, 22:29   #4
reijii_nia
Пользователь
 
Регистрация: 29.03.2014
Сообщений: 19
По умолчанию

спасибо...однако набрал...ответ постоянно 2...я хз...изучаю недавно...мож чего не хватает или что не так ввел

Код:
program fuct;
 var
  n,m,f,Result:integer;
 function Factorial(k: Integer): Longint;
   var i: Integer;
   begin
    Result:=1;
    for i:=2 to k do
     Result:=Result*i;
   end;
begin
 f:=Factorial(n)*(Factorial(m)+Factorial(n-m));
 writeln(f);
end.
reijii_nia вне форума Ответить с цитированием
Старый 29.03.2014, 22:33   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Result:integer; не надо. Да и не помню - паскаль понимает Result в функции?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.03.2014, 22:44   #6
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от reijii_nia Посмотреть сообщение
ответ постоянно 2
Судя по всему, Ваша процедура выдаёт результат сразу же в 1м проходе цикла. Result нужно ставить в самом конце.
Можно попробовать сделать как-нибудь так:
Код:
function Factorial(k: Integer): Longint;
   var
     i: Integer;
     r:Longint;       
   begin
    r:=1;
    for i:=2 to k do
     r:=r*i;
    Result:=r;
   end;
P.S. Код писал прямо на форуме, соответственно, без проверки.
Streletz вне форума Ответить с цитированием
Старый 29.03.2014, 22:58   #7
reijii_nia
Пользователь
 
Регистрация: 29.03.2014
Сообщений: 19
По умолчанию

все равно 2 выдает((((
reijii_nia вне форума Ответить с цитированием
Старый 30.03.2014, 00:45   #8
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от reijii_nia Посмотреть сообщение
все равно 2 выдает((((
Значит что-то Вы не так делаете. Например, вводите не те данные при тестировании. Потому, что я проверил код из своих постов. Работает нормально.
Streletz вне форума Ответить с цитированием
Старый 30.03.2014, 02:49   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Судя по всему, reijii_nia вообще не запрашивает N и M. Они инициализируются нулями (скорее всего), а функция факториал возвращает 1, если цикл ни разу не выполнен. 1 * (1 + 1) = 2
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составьте программу, вычисляющую значение функции при заданном значении X (Паскаль) samara639 Помощь студентам 3 15.12.2013 21:09
составить программу вычисления выражения Al'f!ra Паскаль, Turbo Pascal, PascalABC.NET 2 22.05.2012 16:02
Составить программу вычисления выражения Zebar57 Помощь студентам 2 14.05.2012 17:24
Составить программу вычисления выражения NXZ Паскаль, Turbo Pascal, PascalABC.NET 6 05.04.2012 23:59
(Pascal) Составить программу, вычисляющую предпоследнюю цифру числа n oxxxy Помощь студентам 2 29.02.2012 16:47