<u>PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018</u>
<u>Внимание! Если программа не работает, обновите версию!</u>
function gcd(a,b:integer):integer; // НОД
begin
while b<>0 do begin a:=a mod b; Swap(a,b) end;
Result:=a
end;
procedure RedFrac(var a,b:integer); // сокращение дроби
begin
var (sgna,sgnb):=(Sign(a),Sign(b)); // мы должны учитывать знак!
(a,b):=(Abs(a),Abs(b));
var d:=gcd(a,b);
a:=(a div d)*sgna; b:=(b div d)*sgnb
end;
begin
var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:');
var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:');
(a,b):=(a*c,b*d);
RedFrac(a,b);
Writeln('Результат умножения: ',a,' / ',b)
end.
<u>Пример</u>
Введите числитель и знаменатель 1-й дроби: 32 1024
Введите числитель и знаменатель 2-й дроби: 60 300
Результат умножения: 1 / 160
<u>В качестве бонуса - решение на базе входящей в состав PascalABC.NET библиотеки численных методов</u>
uses NumLibABC;
begin
var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:');
var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:');
Writeln('Результат умножения: ',Frc(a,b)*Frc(c,d))
end.
Использовать Чертежник
алг
нач
сместиться на вектор (-10,3)
опустить перо
сместиться на вектор (8,0)
сместиться на вектор (2,8)
сместиться на вектор (2,-8)
сместиться на вектор (8,0)
сместиться на вектор (-6,-5)
сместиться на вектор (3,-8)
сместиться на вектор (-7,5)
сместиться на вектор (-7,-5)
сместиться на вектор (3,8)
сместиться на вектор (-6,5)
поднять перо
сместиться на вектор (9,-1)
опустить перо
сместиться на вектор (1,4)
сместиться на вектор (1,-4)
сместиться на вектор (5,0)
сместиться на вектор (-4,-3)
сместиться на вектор (2,-5)
сместиться на вектор (-4,3)
сместиться на вектор (-4,-3)
сместиться на вектор (2,5)
сместиться на вектор (-4,3)
сместиться на вектор (5,0)
поднять перо
сместиться на вектор (-1,1)
опустить перо
сместиться на вектор (-6,8)
поднять перо
сместиться на вектор (10,-8)
опустить перо
сместиться на вектор (6,8)
поднять перо
сместиться на вектор (-4,-13)
опустить перо
сместиться на вектор (6,-1)
поднять перо
сместиться на вектор (-14,1)
опустить перо
сместиться на вектор (-6,-1)
поднять перо
сместиться на вектор (10,-2)
опустить перо
сместиться на вектор (0,-5)
поднять перо
кон
Решение показано в прилагаемом файле.
MS-DOS QBasic
Версия 1.0
Copyright (C) Microsoft Corporation, 1987-1991.
INPUT n, start, finish
k = start + finish
IF k > n THEN k = n
IF k < 1 THEN k = 1
PRINT k
Тестовое решение
Y:\qbasic>QBASIC.EXE
? 10,5,3
8
Чтобы продолжить, нажмите любую клавишу