Вопрос задан 07.05.2026 в 13:43.
Предмет Информатика.
Спрашивает Kiseļovs Aleksandrs.
Напишите процедуру, которая сокращает дробь вида M/N. Числитель и знаменатель дроби передаются как изменяемые параметры. Пример: Введите числитель и знаменатель дроби: 25 15 После сокращения: 5/3
Ответы на вопрос
Отвечает Тышкевич Влада.
Для сокращения дроби нужно разделить числитель и знаменатель на их наибольший общий делитель. Удобнее всего найти НОД алгоритмом Евклида.
Пример процедуры на Pascal:
pascalprogram 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.
В процедуре:
pascalprocedure Sokratit(var M, N: integer);
параметры M и N передаются через var, то есть как изменяемые параметры. Поэтому после вызова процедуры их значения действительно меняются в основной программе.
Например, если ввести:
25 15
то НОД чисел 25 и 15 равен 5.
Дробь сокращается так:
25 / 5 = 5
15 / 5 = 3
Результат:
После сокращения: 5/3
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

