Привести дроби к общему знаменателю и упорядочить их в порядке возрастания - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Даны дроби P1/Q1 ,P2/Q2 , ...,Pn/Qn (рi , qi — натуральные). Составить программу, которая приводит эти дроби к общему знаменателю и упорядочивает их в порядке возрастания.

Решение задачи: «Привести дроби к общему знаменателю и упорядочить их в порядке возрастания»

textual
Листинг программы
uses crt;
type
Natur = 1..maxint;{натуральные числа типа integer}
Frac = record
       p:Natur; {Числитель дроби}
       q:Natur {Знаменатель дроби}
       end;
mass=array[1..100] of Frac;
{создание масива дробей}
procedure Vvod(var m:mass; var n:integer);
var i:integer;
begin
write('Введите размер массива - ');
readln(n);
writeln('Исходный массив:');
for i:=1 to n do
 begin
  m[i].p:=random(9)+1;
  m[i].q:=random(9)+1;
  write(m[i].p,'/',m[i].q,' ');
 end;
writeln;
end;
{нахождение НОД}
function Nod(a,b:integer):integer;
begin
while a<>b do
if a>b then a:=a-b else b:=b-a;
Nod:=a
End;
{нахождение НОК}
function NOK(x,y:integer):integer;
Begin
NOK:=(x div NOD (x,y))*y;
end;
procedure ObshZn(var m:mass;n:integer);
var i,k,d:integer;
begin
k:=NOK(m[1].q,m[2].q);
for i:=3 to n do k:=NOK(k,m[i].q);
for i:=1 to n do
 begin
  d:=k div m[i].q;
  m[i].p:=m[i].p*d;
  m[i].q:=m[i].q*d;
 end;
end;
{сравнение дробей по величине}
function Bolshe(a,b:Frac):boolean;
begin
 Bolshe:=a.p>b.p
end;
{сортировка по возрастанию}
procedure Sort(var m:mass;n:integer);
var i,j:integer;
    x:Frac;
begin
for i:=1 to n-1 do
for j:=i to n do
if Bolshe(m[i],m[j])then
 begin
  x:=m[i];
  m[i]:=m[j];
  m[j]:=x;
 end;
end;
 
{вывод отсортированного массива дробей на экран}
procedure Vyvod(var m:mass;n:integer);
var i:integer;
begin
writeln('Отсортированный массив:');
for i:=1 to n do
write(m[i].p,'/',m[i].q,'   ');
end;
var a:mass;
    n:integer;
begin
clrscr;
randomize;
Vvod(a,n);
ObshZn(a,n);
Sort(a,n);
Vyvod(a,n);
readln
end.

Объяснение кода листинга программы

  1. Создается массив mass типа Frac и заполняется случайными числами от 1 до 9.
  2. Функция Vvod считывает размер массива n и заполняет его случайными числами от 1 до 9.
  3. Функция Nod находит наибольший общий делитель двух чисел.
  4. Функция NOK находит наименьшее общее кратное двух чисел.
  5. Функция Bolshe сравнивает две дроби по величине.
  6. Процедура Sort сортирует массив mass по возрастанию.
  7. Процедура Vyvod выводит отсортированный массив mass на экран.
  8. В основной части программы создается переменная a типа mass и заполняется случайными числами от 1 до 9. Затем вызываются функции Vvod, ObshZn, Sort и Vyvod.
  9. Программа завершается после вывода отсортированного массива mass на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы