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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 24.10.2013, 15:18   #1
twonislatex
Новичок
Джуниор
 
Регистрация: 24.10.2013
Сообщений: 6
Восклицание переделать программу под функцию

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

Вот сама программа


Код:
Program lab9_8;
uses crt;
var sum:real; n:integer;
procedure pr_sum(n:byte;var sum:real);
var fac:real; i,j:byte;
begin
  sum:=0;
  for i:=1 to (n div 2)+(n mod 2) do
  begin
    fac:=1;
    for j:=2 to (2*i-1) do
    fac:=fac*j;
    sum:=sum+fac;
  end;
end;
begin
  write('n=');
  readln(n);
  pr_sum(n,sum);
  writeln('сумма=',sum:0:3);
  readln;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.10.2013 в 15:56. Причина: отформатировал код программы тегами...
twonislatex вне форума
Старый 24.10.2013, 15:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
Program lab9_8;
uses crt;
var n:integer;
procedure pr_sum(n:byte):real
var fac,sum:real; i,j:byte;
begin
sum:=0;
for i:=1 to (n div 2)+(n mod 2) do
begin
fac:=1;
for j:=2 to (2*i-1) do
fac:=fac*j;
sum:=sum+fac;
end;
pr_sum:=sum;
end;

begin
write('n=');
readln(n);

writeln('сумма=',pr_sum(n,sum):0:3);
readln;
end.
I'm learning to live...
Stilet вне форума
Старый 24.10.2013, 16:00   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так пойдёт?
Код:
Program lab9_8;
uses crt;
function pr_sum(n:byte) : real;
var 
  fac:real; 
  i,j:byte;
  sum:real;
begin
  sum:=0;
  for i:=1 to (n div 2)+(n mod 2) do
  begin
    fac:=1;
    for j:=2 to (2*i-1) do
       fac:=fac*j;
    sum:=sum+fac;
  end;
end;

var 
  n:integer;
begin
  write('n=');
  readln(n);
  writeln('сумма=',pr_sum(n):0:3);
  readln;
end.
Serge_Bliznykov вне форума
Старый 24.10.2013, 16:33   #4
twonislatex
Новичок
Джуниор
 
Регистрация: 24.10.2013
Сообщений: 6
По умолчанию

да пойдет,но почему когда я ввожу n она выдает 0000
twonislatex вне форума
Старый 24.10.2013, 16:39   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, надо вводить не n, а число.
а во-вторых, вы свою программу из пост #1 запустите, посмотрите, что она выдаёт.
потому как я алгоритм функции суммирования факториалов не переделывал - что у Вас было написано в пост #1 - то и получаете...
Serge_Bliznykov вне форума
Старый 24.10.2013, 16:41   #6
twonislatex
Новичок
Джуниор
 
Регистрация: 24.10.2013
Сообщений: 6
По умолчанию

нет моя программа с процедурой выдает все правильно, а эта какое бы я число не ввел все равно выдает 0.000
twonislatex вне форума
Старый 24.10.2013, 17:01   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вы текст программы из форуму, надеюсь СКОПИРОВАЛИ?!?!
Serge_Bliznykov вне форума
Старый 24.10.2013, 17:32   #8
twonislatex
Новичок
Джуниор
 
Регистрация: 24.10.2013
Сообщений: 6
По умолчанию

да из форума скопировал и в паскале abc она у меня работает, а ваша нет((
twonislatex вне форума
Старый 24.10.2013, 20:40   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы правы!
это у меня в коде сделана грубейшая (и глупейшая) ошибка - я НЕ ВОЗВРАЩАЮ результат вычисления функции!

вот корректный вариант (выделил пропущенную мной строку):
Код:
function pr_sum(n:byte) : real;
var
  fac:real;
  i,j:byte;
  sum:real;
begin
  sum:=0;
  for i:=1 to (n div 2)+(n mod 2) do
  begin
    fac:=1;
    for j:=2 to (2*i-1) do
       fac:=fac*j;
    sum:=sum+fac;
  end;
  pr_sum := sum
end;

извините...
Serge_Bliznykov вне форума
Старый 25.10.2013, 16:12   #10
twonislatex
Новичок
Джуниор
 
Регистрация: 24.10.2013
Сообщений: 6
По умолчанию

ничего страшного все ошибаются, спасибо вам
twonislatex вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переделать программу под процедуры и функции graf890 Помощь студентам 0 21.02.2011 20:41
Паскаль. переделать программу под процедцры и функции graf890 Помощь студентам 1 21.02.2011 10:39
[Assembler (TASM)] Переделать рабочую программу подсчета полинома под 32разрядные регистры HostileZeth Помощь студентам 0 28.12.2010 15:45
Переделать программу под структуры. Си++ Влад-mego Помощь студентам 0 12.04.2009 22:14