Умножить дробь на дробь и получить ответ в виде несократимой дроби - Pascal
Формулировка задачи:
Даны две дроби A/B и C/D (где А, В, С, D — натуральные числа).
Умножить дробь на дробь и получить ответ в виде несократимой дроби.
Решение задачи: «Умножить дробь на дробь и получить ответ в виде несократимой дроби»
textual
Листинг программы
var a,b,c,d,nod:integer; begin repeat writeln('Введите числитель и знаменатель первой дроби '); readln(a,b); until(a>0)and(b>0); repeat writeln('Введите числитель и знаменатель второй дроби '); readln(c,d); until(c>0)and(d>0); //найдем НОД a:=a*c; b:=b*d; c:=a; d:=b; while c<>d do if c>d then c:=c-d else d:=d-c; nod:=c; //сократим дробь a:=a div nod; b:=b div nod; //выведем сокращенную дробь writeln('Результат умножения:'); if a div b>0 then write(a div b,' ',a mod b,'/',b) else write(a,'/',b); end.
Объяснение кода листинга программы
- Создаются переменные
a
,b
,c
иd
типаinteger
. - Пользователю предлагается ввести числитель и знаменатель первой дроби. Это делается с помощью функции
readln()
. - Введенные значения сохраняются в переменных
a
иb
. Проверяется, что обе дроби неотрицательны с помощью условияa>0
иb>0
. Если это условие не выполняется, то цикл повторяется. - Аналогично пользователю предлагается ввести числитель и знаменатель второй дроби. Сохраненные значения сохраняются в переменных
c
иd
. - Находится наибольший общий делитель (НОД) для числителей первой и второй дробей. Для этого выполняется последовательное умножение и деление числителей и знаменателей до тех пор, пока не будет достигнуто равенство или одно из чисел не станет меньше другого. Значение НОД сохраняется в переменной
nod
. - Сокращается дробь для первой и второй дроби путем деления на НОД. Сохраненные значения сохраняются в переменных
a
иb
. - Выводится результат умножения дробей в виде сокращенной дроби. Если результат деления первой дроби на вторую больше нуля, то выводятся числитель и знаменатель первой дроби, разделенные пробелами и дефисом, а также числитель и знаменатель второй дроби, разделенные дефисом и знаком деления. Если результат деления меньше нуля, то выводится только числитель первой дроби, разделенный дефисом и знаком деления.