Напечатать все простые несократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают 7, в порядке возрастания. - Pascal

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

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

Напечатать все простые несократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают 7, в порядке возрастания.

Решение задачи: «Напечатать все простые несократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают 7, в порядке возрастания.»

textual
Листинг программы
uses crt;
const n=7;
type
frac=record
     p,q:1..n;
     end;
function Nod(m,n:byte):byte;{функция определения наибольшекго общего делителя
один из алгоритмов}
begin
while m<>n do
if m>n then m:=m-n else n:=n-m;
Nod:=m;
end;
var
m:array[1..(n*n+n) div 2] of frac;{максимльный размер массива=сумме прогрессии 1,2,3...n}
k,i,j:byte;
x:frac;{переменная-буфер для сортировки}
begin
clrscr;
k:=0;
for i:=1 to n do{перебираем все числа от 1 до 7}
for j:=1 to n do
if(i<j)and (Nod(j,i)=1)then{если первое число меньше второго и они несократимы}
 begin
  k:=k+1;{cчитаем}
  m[k].p:=i;{меньше в числитель}
  m[k].q:=j;{больше в знаменатель}
 end;
for i:=1 to k-1 do{сортируем обменом по возрастанию}
for j:=i+1 to k do
if m[i].p/m[i].q> m[j].p/m[j].q then
 begin
  x:=m[i];
  m[i]:=m[j];
  m[j]:=x;
 end;
for i:=1 to k do{выводим}
write(m[i].p,'/',m[i].q,'  ');
readln
end.

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

Этот код написан на языке Pascal и выполняет следующие действия:

  1. Создает переменную n со значением 7, которое представляет верхнюю границу для дробей в числителе и знаменателе.
  2. Определяет тип frac, который представляет структуру для хранения дробей в виде записи p, q: 1..n.
  3. Определяет функцию Nod, которая реализует алгоритм наибольшего общего делителя (НОД) двух чисел.
  4. Объявляет переменные m, k, i и j для хранения массива дробей, индексов и чисел соответственно.
  5. Инициализирует переменную k значением 0 и начинает цикл for, который перебирает числа от 1 до 7 (т.е. от 1 до n).
  6. Внутри цикла for проверяет условие if(i<j)and (Nod(j,i)=1), что означает, что текущее число i меньше текущего числа j и они являются несократимыми. Если это условие истинно, то увеличивает значение k на 1 и присваивает соответствующие элементы массива m текущим числом i и знаменателю j.
  7. После завершения внутреннего цикла for, происходит внешний цикл for, который сортирует массив m по возрастанию. Для этого используется алгоритм сортировки обменом.
  8. После завершения внешнего цикла for, происходит еще один цикл for, который выводит каждую дробь из массива m в консоль.
  9. В конце кода происходит вызов функции readln, чтобы ожидать ввода пользователя перед завершением программы.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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