Функцию оформить процедурой (вычислить сумму) - Free Pascal
Формулировка задачи:
Функцию оформить процедурой(вычислить сумму вида 1-1/2+1/3+...+((-1)^(n-1))/n)
uses crt; Var n:integer; z:real; Function S(m:integer):real; Begin if m<>1 then if (m mod 2)=0 then s:=s(m-1)-(1/m) else s:=s(m-1)+(1/m) else s:=1; end; Begin clrscr; repeat write('N='); readln(N); until n>0; writeln('s=',s(n):0:5); readln; END.
Решение задачи: «Функцию оформить процедурой (вычислить сумму)»
textual
Листинг программы
program f2pr_sum; {Решаем задачу по зпданию: [url]http://www.cyberforum.ru/free-pascal/thread1224324.html[/url] Пределать заданную функцию S в процедуру. } uses crt; var n: integer; r: real; function S(m: integer): real; begin if m <> 1 then if (m mod 2) = 0 then s := s(m - 1) - (1 / m) else s := s(m - 1) + (1 / m) else s := 1; end; //без рекурсии procedure SS(m: integer; out r: real); begin r:= 1.0; if m = 1 then exit; while m <> 1 do begin if (m mod 2) = 0 then r:= r - 1/m else r:= r + 1/m; Dec(m); end; end; //с рекурсией procedure SSS(m: integer; out r: real); var _r: real; begin _r:= 0.0; r:= 0.0; if m <> 1 then if (m mod 2) = 0 then begin SSS(m-1, _r); r := _r - (1 / m) end else begin SSS(m-1, _r); r := _r + (1 / m) end else r := 1; end; begin clrscr; repeat Write('N='); readln(N); until n > 0; writeln('s=', s(n): 0: 5); SS(n, r); writeln('s=', r: 0: 5); SSS(n, r); writeln('s=', r: 0: 5); readln; end.
Объяснение кода листинга программы
- Объявлены переменные: n (целое число), r (реальная величина).
- Определена функция S с типом возвращаемого значения real, которая вычисляет сумму.
- В функции S используется условие, определяющее, является ли число m четным или нечетным.
- Если число m не равно 1, то выполняется блок кода, который вычисляет сумму s.
- Если число m равно 1, то сумма равна 1.
- Определена процедура SS без рекурсии, которая вычисляет сумму s.
- В процедуре SS используется цикл while, который выполняется до тех пор, пока число m не станет равным 1.
- В каждой итерации цикла while выполняется блок кода, который вычисляет сумму s.
- Определена процедура SSS с рекурсией, которая вычисляет сумму s.
- В процедуре SSS определена внутренняя переменная _r для хранения промежуточных результатов.
- В процедуре SSS используется рекурсивный вызов функции SSS для вычисления суммы s на меньшем числе m.
- В процедуре SSS после рекурсивного вызова функции SSS выполняется блок кода, который вычисляет сумму s.
- В основной части программы запрашивается число n и сохраняется в переменной n.
- Вычисляется сумма s с помощью функции S и выводится на экран.
- Вычисляется сумма s с помощью процедуры SS и выводится на экран.
- Вычисляется сумма s с помощью процедуры SSS и выводится на экран.
- Программа завершается чтением числа n и выводом суммы s.
- Программа завершается чтением суммы s.
- Программа завершается чтением суммы s.
- Программа завершается чтением суммы s.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д