Задача 1 Урок 22

Задача 1 Урок 22

У вас есть функция:

program my_program;
type b = array[1..10] of integer; // объявление типа
     
function filling_array( min, max : integer ) : b;
  var  count, i, j, l, k, number : integer;
      arr : b;
begin 
  count := 0;
  k := 1;
  randomize; // вызов процедуры
  while( count < 10 ) do 
  begin
    number := random( max - (min + 1) + min ) ; // случайные числa
    write( number, ' ' ); 
    j := 0; 
    for i := low( arr ) to k do
    begin
      if( arr[i] <> number ) then
      begin
          j += 1; 
          if( j = k ) then
          begin
            count += 1;
            k += 1; 
            arr[count] := number; 
          end;
      end
      else
        break;
    end;
  end;
  filling_array := arr; // возвращаем значение функции
end; 

Что делает эта функция?
В данной функции есть лишние переменные, перепишите код так, чтобы они не использовались.

type b = array[1..10] of integer; // объявление типа

var
  mas: b;
  i: integer;

function filling_array( max : integer ) : b;
//заполняет массив числами [0, max - 1) без повторений
//распечатывая генерируемые числа
//max должен быть >= (high(arr) + 1), иначе цикл станет бесконечным,
//т.к. заполнение без повторений не будет возможным
// лишние: j, l, k, min
var
  count, i, number: integer;
  arr: b;
begin
  count := 1;
  randomize; // вызов процедуры

  while(count <= 10) do
  begin
    number := random( max - 1 ); // случайные числa
    write( number, ' ' );

    for i := low( arr ) to count do
    begin
      if(arr[i] = number) then
        break
      else if(i = count) then
      begin
        count += 1;
        arr[i] := number;
       end;
    end;

  end;
  filling_array := arr; //возвращаем значение функции
end;

begin

  mas := filling_array(11);

  writeln();
  writeln();

  for i := low(mas) to high(mas) do
    write(mas[i], ' ');

  readln();

end.
vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)