Вычисление суммы ряда p/q. Сумма должна быть = обычная несократимая дробь - Pascal ABC
Формулировка задачи:
Нужна помощь в написании программы, в основном процедуры. Программа вычисления суммы ряда p/q = 1 + 1/2 + 1/3 + ... + 1/n для заданного n. Сумма ряда в итоге, должна быть несократимая дробь(p,q - натуральные).
Во есть такой код, считает, но дробь выходит такая, которую можно сократить.
Нужно встроить процедуру, которая будет делать так, что бы выходила несократимая дробь.
Есть такой вариант процедуры, но что-то не пойму что и как.
Дробь выходит несократимой, но в процедуре прописано другое условие. Я не знаю, как мне заменить на свое. Помогите кто-то.
Решение задачи: «Вычисление суммы ряда p/q. Сумма должна быть = обычная несократимая дробь»
textual
Листинг программы
procedure summa(n:integer;var p,q:integer); var i:integer; begin p:=1; q:=1; for i:=2 to n do begin p:=p*i+q; q:=q*i; end; writeln('Сумма до сокращения= ',p,'/',q); end; procedure sokr(var p,q:integer); var x,y,nd:integer; begin {нахождение НОД по алгоритму Эвклида} x:=p; y:=q; repeat if x>y then x:=x mod y else y:=y mod x; until (x=0) or (y=0); nd:=x+y; {Сокращение} p:=p div nd; q:=q div nd; writeln('Сумма после сокращения= ',p,'/',q); end; var p,q,n:integer; begin repeat write('Введите n от 1 до 12 n='); readln(n); until n in [1..12]; summa(n,p,q); sokr(p,q) end.
Объяснение кода листинга программы
- В процедуре
summa
переменнойn
присваивается значение, введенное пользователем. Переменнымp
иq
присваиваются начальные значения 1. - Затем происходит цикл
for
, который выполняется от 2 доn
. Внутри цикла переменныеp
иq
пересчитываются согласно формулеp=p*i+q
иq=q*i
. - По завершении цикла выводится сообщение с суммой до сокращения, которая представляет собой обычную несократимую дробь.
- В процедуре
sokr
переменнымx
,y
иnd
присваиваются начальные значения 1. - Затем следует повторный цикл
repeat
, который выполняется до тех пор, покаx
илиy
не станут равными нулю. - В конце цикла переменным
p
иq
присваиваются результаты деленияx
иy
на их наибольший общий делительnd
. - Выводится сообщение с суммой после сокращения, которая также представляет собой обычную несократимую дробь.
- В основной программе сначала запрашивается значение
n
от пользователя. Затем вызываются процедурыsumma
иsokr
с соответствующими значениямиp
иq
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д