Домашние задания: Информатика

напишите пожалуйста алгоритм деление дробей

на Pascal
на алгоритмическом языке
в виде блок-схемы
// Деление дробей
program koki;

var
// Индексы массива:
// (результат, 1_дробь, 2_дробь)
// (целая_часть, числитель, знаменатель)
n: array[0..2, 0..2] of integer;
input: string; // Ввод с клавиатуры

begin
writeln('Формат ввода: Целая_часть+Числитель/Знаменатель', #10,
'Например: Две целые и три пятых = 2+3/5, Девять тридцатьседьмых = 0+9/37, ',
'Десять целых = 10+0/1');
// Ввод первой дроби, потом второй
var i := 1;
while i < 3 do begin
write('Введите ', i, 'ю дробь -> ');
readln(input);
try
// Целая часть (подстрока от начала строки до '+')
n[i][0] :=
strToInt(copy(input, 0, pos('+', input)-1));
// Числитель (подстрока от '+' до '/')
n[i][1] :=
strToInt(copy(input, pos('+', input), pos('/', input) - pos('+', input)));
// Знаменатель (подстрока от '/' до конца строки)
n[i][2] :=
strToInt(copy(input, pos('/', input)+1, length(input) - pos('/', input)));
if n[i][2] = 0 then begin
writeln('Знаменатель не может быть равен нулю! Попробуйте еще раз..');
continue;
end;
except
on e: System.FormatException do begin
writeln('Неверный формат! Попробуйте еще раз..');
continue;
end;
end;
// Сразу перевод в правильную дробь
n[i][1] += n[i][0] * n[i][2];
// Следующее число
i += 1;
end;
n[0][1] := n[1][1] * n[2][2]; // - числитель результата
n[0][2] := n[1][2] * n[2][1]; // - знаменатель результата
// Если числитель не меньше знаменателя, то перевод в смешанную дробь
if n[0][1] >= n[0][2] then begin
n[0][0] := n[0][1] div n[0][2]; // - целая часть результата
n[0][1] := n[0][1] mod n[0][2]; // - новый числитель результата
end;
// Вывод целой части результата
write('Результат деления 1й дроби на 2ю: ', n[0][0]);
// Если дробная часть есть, то вывести ее тоже
if not(n[0][1] = 0) then write('+', n[0][1], '/', n[0][2]);
end.
IK
Indira Khasenova)
18 091
Лучший ответ
Indira Khasenova) Формат ввода: Целая_часть+Числитель/Знаменатель
Например: Две целые и три пятых = 2+3/5, Девять тридцатьседьмых = 0+9/37, Десять целых = 10+0/1
Введите 1ю дробь -> 123
Неверный формат! Попробуйте еще раз..
Введите 1ю дробь -> 0+10/7
Введите 2ю дробь -> 5+1/3
Результат деления 1й дроби на 2ю: 0+30/112
Indira Khasenova) Нет сокращения дробей, добавить несложно..
Indira Khasenova) Никакой тяги к искусству))
Тогда так..
var chisl_res, znam_res, chisl_1, znam_1, chisl_2, znam_2: integer;
begin
write('Введите числитель и знаменатель 1й дроби через пробел: ');
readln(chisl_1, znam_1);
write('Введите числитель и знаменатель 2й дроби через пробел: ');
readln(chisl_2, znam_2);
chisl_res := chisl_1 * znam_2;
znam_res := znam_1 * chisl_2;
write('Результат: ', chisl_res, '/', znam_res);
end.