Вопрос задан 25.02.2025 в 09:42. Предмет Информатика. Спрашивает Позин Матвей.

Даны натуральные числа a и b, обозначающие соответственно числитель и
знаменатель дроби. Сократить дробь, т. е. найти такие натуральные числа p и q, не
имеющие общих делителей, что p/q=a/b. (Написать функцию для расчёта наибольшего
общего делителя двух натуральных чисел, используя алгоритм Евклида).
Функции пользователя. Паскаль.

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

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

Отвечает Пасечник Виталий.

Вот подробный ответ на ваш вопрос с примером реализации на языке Pascal:


Для сокращения дроби нужно найти наибольший общий делитель (НОД) числителя и знаменателя, а затем разделить числитель и знаменатель на этот НОД. Для расчёта НОД удобно использовать алгоритм Евклида.

Алгоритм Евклида:
Он основан на простом принципе: НОД двух чисел равен НОД остатка от деления большего числа на меньшее и меньшего числа. Этот процесс повторяется до тех пор, пока остаток не станет равным нулю.

Пример реализации на Pascal:

pascal
program SimplifyFraction;

{ Функция для нахождения НОД двух чисел с использованием алгоритма Евклида } function GCD(a, b: integer): integer; begin while b <> 0 do begin GCD := b; b := a mod b; a := GCD; end; GCD := a; end;

{ Процедура для сокращения дроби } procedure SimplifyFraction(var numerator, denominator: integer); var gcdValue: integer; begin gcdValue := GCD(numerator, denominator); { Находим НОД числителя и знаменателя } numerator := numerator div gcdValue; { Делим числитель на НОД } denominator := denominator div gcdValue; { Делим знаменатель на НОД } end;

{ Главная программа } var a, b: integer; begin { Ввод числителя и знаменателя } writeln('Введите числитель:'); readln(a); writeln('Введите знаменатель:'); readln(b);

if b = 0 then begin writeln('Ошибка: знаменатель не может быть равен нулю.'); end else begin SimplifyFraction(a, b); writeln('Сокращённая дробь: ', a, '/', b); end; end.


Подробное объяснение кода:

  1. Функция GCD (Greatest Common Divisor):

    • Принимает два числа a и b.
    • Использует цикл while для нахождения НОД. Остаток a mod b вычисляется до тех пор, пока b не станет равным нулю.
    • Возвращает значение НОД.
  2. Процедура SimplifyFraction:

    • Получает числитель и знаменатель.
    • Находит НОД этих чисел.
    • Делит числитель и знаменатель на НОД, чтобы получить сокращённую дробь.
  3. Главная программа:

    • Считывает числитель и знаменатель.
    • Проверяет, чтобы знаменатель не был равен нулю (так как деление на ноль невозможно).
    • Вызывает процедуру SimplifyFraction для сокращения дроби.
    • Выводит результат.

Пример работы программы:

Ввод:

Введите числитель: 36 Введите знаменатель: 48

Вывод:

Сокращённая дробь: 3/4

Эта программа подходит для работы с любыми натуральными числами, сокращая дроби до их несократимого вида.

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

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

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

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