Вопрос задан 07.05.2026 в 13:43. Предмет Информатика. Спрашивает Kiseļovs Aleksandrs.

Напишите процедуру, которая сокращает дробь вида M/N. Числитель и знаменатель дроби передаются как изменяемые параметры. Пример: Введите числитель и знаменатель дроби: 25 15 После сокращения: 5/3

Перейти к ответам

Ответы на вопрос

Отвечает Тышкевич Влада.

Для сокращения дроби нужно разделить числитель и знаменатель на их наибольший общий делитель. Удобнее всего найти НОД алгоритмом Евклида.

Пример процедуры на Pascal:

pascal
program ReduceFraction;

procedure Sokratit(var M, N: integer);
var
a, b, r, nod: integer;
begin
a := abs(M);
b := abs(N);

while b <> 0 do
begin
r := a mod b;
a := b;
b := r;
end;

nod := a;

if nod <> 0 then
begin
M := M div nod;
N := N div nod;
end;

{ Чтобы минус был только в числителе }
if N < 0 then
begin
M := -M;
N := -N;
end;
end;

var
M, N: integer;

begin
writeln('Введите числитель и знаменатель дроби:');
readln(M, N);

if N = 0 then
writeln('Ошибка: знаменатель не может быть равен нулю.')
else
begin
Sokratit(M, N);
writeln('После сокращения: ', M, '/', N);
end;
end.

В процедуре:

pascal
procedure Sokratit(var M, N: integer);

параметры M и N передаются через var, то есть как изменяемые параметры. Поэтому после вызова процедуры их значения действительно меняются в основной программе.

Например, если ввести:

25 15

то НОД чисел 25 и 15 равен 5.

Дробь сокращается так:

25 / 5 = 5
15 / 5 = 3

Результат:

После сокращения: 5/3

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос