Урок 20 - Анализ кода - Решение

Урок #20 Анализ кода и простая оптимизация. Паскаль

Анализ/"чтение" уже написанного кем-то кода -- одно из важнейших умений, постоянно используемое в повседневной работе профессиональными программистами.

Функция создает массив из несовпадающих чисел от 0 до (max-1) и не будет
работать (точнее зациклится), если (max-1) меньше, чем заявленное количество
элементов в массиве;
так же во время создания массива функция печатает каждое сгенерированное рэндомом
число, которое будет претендовать на попадание в массив.

Лишние переменные и прочие "замечания":
1) min - не используется: random работает только по верхнему значению max,
минимальным всегда будет 0, а не min, причем он рэндомит из (max - 1),
поэтому макс. зн-ие number = (max - 2);
2) лишние переменные: count, j, l, min

Переписываю код, убирая лишние переменные:

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

function filling_array( max : integer ) : b;
  var arr: b;
      i, k, number: integer;     // бало count, i, j, l, k, number
begin
  randomize;
  k := 1;
  while (k <= 10) do
    begin
      number := random(max + 1);  // пусть рэндомятся числа от 0 до max включительно
      write( number, ' ' );
      for i:=low(arr) to k do
        if (number = arr[i]) then
            break;
      if (i = k) and (number <> arr[i]) then
        begin
          k += 1;
          arr[i] := number;
        end;
    end;
  filling_array := arr;
end;
vedro-compota's picture

в оформлениее не хватает ссылки на урок

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

ссылку добавила

vedro-compota's picture

решение засчитано

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