Привести дроби к общему знаменателю и упорядочить их в порядке возрастания - 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.
Объяснение кода листинга программы
- Создается массив
mass
типаFrac
и заполняется случайными числами от 1 до 9. - Функция
Vvod
считывает размер массиваn
и заполняет его случайными числами от 1 до 9. - Функция
Nod
находит наибольший общий делитель двух чисел. - Функция
NOK
находит наименьшее общее кратное двух чисел. - Функция
Bolshe
сравнивает две дроби по величине. - Процедура
Sort
сортирует массивmass
по возрастанию. - Процедура
Vyvod
выводит отсортированный массивmass
на экран. - В основной части программы создается переменная
a
типаmass
и заполняется случайными числами от 1 до 9. Затем вызываются функцииVvod
,ObshZn
,Sort
иVyvod
. - Программа завершается после вывода отсортированного массива
mass
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д