Задание 14 Урок 15

Задание 14 Урок 15

Дан массив длиной N (не более 100 элементов). Проверить, что в нем в встречаются все числа от 0 до k, где 0≤k

type arr = array of integer;
var first_array : arr;
  n,k : integer;

function initialization_array(f_array: arr; n: integer): arr;
var i,min,max : integer;
begin
  min := 0;
  max := 100;
  setlength(f_array,n);
  for i := low(f_array) to high(f_array) do
    f_array[i] := min + random(max - min + 1);
  result := f_array;
end;

function  check_availability(f_array: arr; k : integer): arr;
var c,z : integer;
  second_array : arr;

function change_within(c: integer): arr;
var h : integer;
begin
  for h := low(f_array) to high(f_array) do
    if (f_array[h] > c) then
      begin
        f_array[h] := c;
        break;
      end;
  result := f_array;
end;

begin
  setlength(second_array,k+1);
  for c := low(second_array) to high(second_array) do
    begin
      second_array[c] := c;
      for z := low(f_array) to high(f_array) do
        if second_array[c] = f_array[z] then
          break
        else
          if (z = high(f_array)) and (second_array[c] <> f_array[z]) then
            begin
              writeln('Число ', second_array[c],' в массиве отсутствует!');
              f_array := change_within(c);
            end;
    end;
  result := f_array;
end;

procedure print(f_array: arr);
var z : integer;
begin
  for z := low(f_array) to high(f_array) do
    write('|', f_array[z], '|');
end;

procedure check_n(var n: integer);
var m : integer;
begin
  m := 0;
  repeat
    if n > 100 then
      begin
        write('Значение N > 100, введите корректное значение!');
        readln(n);
      end
    else
      if n < 0 then
        begin
          write('Значение N < 0, введите корректное значение!');
          readln(n);
        end
      else
        m += 1;
  until m > 1;
end;

procedure check_k(n: integer; var k: integer);
var l : integer;
begin
  l := 0;
  repeat
    if k >= n then
      begin
        write('Значение K >= N, введите корректное значение!');
        readln(k);
      end
    else
      if k < 0 then
        begin
          write('Значение K < 0, введите корректное значение!');
          readln(k);
        end
      else
        l += 1;
  until l > 1;
end;

begin
  write('Введите N: ');
  readln(n);
  check_n(n);
  write('Введите K: ');
  readln(k);
  check_k(n,k);
  first_array := initialization_array(first_array,n);
  print(first_array);
  writeln();
  check_availability(first_array,k);
  print(first_array);
  check_availability(first_array,k);
  readln();
end.

консоль

Введите N: 12
Введите K: 5
|55||59||72||85||60||86||55||85||42||62||65||38|
Число 0 в массиве отсутствует!
Число 1 в массиве отсутствует!
Число 2 в массиве отсутствует!
Число 3 в массиве отсутствует!
Число 4 в массиве отсутствует!
Число 5 в массиве отсутствует!
|0||1||2||3||4||5||55||85||42||62||65||38|
Введите N: 20
Введите K: 19
|55||59||72||85||60||86||55||85||42||62||65||38||44||30||90||5||97||27||38||48|
Число 0 в массиве отсутствует!
Число 1 в массиве отсутствует!
Число 2 в массиве отсутствует!
Число 3 в массиве отсутствует!
Число 4 в массиве отсутствует!
Число 6 в массиве отсутствует!
Число 7 в массиве отсутствует!
Число 8 в массиве отсутствует!
Число 9 в массиве отсутствует!
Число 10 в массиве отсутствует!
Число 11 в массиве отсутствует!
Число 12 в массиве отсутствует!
Число 13 в массиве отсутствует!
Число 14 в массиве отсутствует!
Число 15 в массиве отсутствует!
Число 16 в массиве отсутствует!
Число 17 в массиве отсутствует!
Число 18 в массиве отсутствует!
Число 19 в массиве отсутствует!
|0||1||2||3||4||6||7||8||9||10||11||12||13||14||15||5||16||17||18||19|
vedro-compota's picture

уйти от использования вложенных фукнций

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