Задание 1 Урок 19

Задание 1 Урок 19

Получите случайный набор из 5 чисел, величиной от 1 до 50.
Рассчитайте для каждого числа два его наибольших делителя, число и два делителя храните как запись, а для всего набора используйте массив записей.
Используйте в коде do with
Выведите на экран результаты расчетов для каждого из исходных значений

type TDel = record
  value, min, max : integer;
end;

var i, temp: integer;
  del: TDel;
  dataRec: array[1..5] of TDel;
function find2Del(a: integer; Del: TDel): TDel;
var
  i, delMax, delMin, delMidl: integer;
begin
  delMax := a;
  delMidl := 0;
  delMin := 1;
  i := 1;
  while (i <= a) do
  begin
    if (a mod i = 0) then
    begin
       delMin := delMidl;
       delMidl := delMax;
       delMax := i;
    end;
    i := i + 1;
  end;

  with Del do begin
    value := a;
    if (delMidl = 1) then
    begin
      min := delMidl;
      max := delMax;
    end
    else
    begin
      min := delMin;
      max := delMidl;
    end;
  end;
  result := Del;
end;

begin
  randomize;
  for i:=1 to 5 do
  begin
     temp := 1+random(50);
     dataRec[i] :=  find2Del(temp, Del);
     writeln('for value = ', dataRec[i].value, '; max del 1 = ', dataRec[i].min, ';   max del 2 =', dataRec[i].max);
  end;
  readln();
end.
      

консоль:

for value = 32; max del 1 = 8;   max del 2 =16
for value = 34; max del 1 = 2;   max del 2 =17
for value = 23; max del 1 = 1;   max del 2 =23
for value = 4; max del 1 = 1;   max del 2 =2
for value = 19; max del 1 = 1;   max del 2 =19