Урок 15 Задача 17

Урок 15 Задача 17:

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

Указание: Проверку массива на соответствие условиям задачи вынести в подпрограмму (функцию)

type
  massiv = array[1..70] of integer;
var
  m: massiv;
  k, f: integer;
  u: boolean;

function prov (m: massiv; h: integer): boolean;
var
  i, j: integer;
  q: boolean;
begin
  for j:=0 to h do                // внешний цикл (от 0 до k)
  begin
    q:= false;
    for i:=low(m) to high(m) do   // вложенный цикл (сам массив)
      if j = m[i] then            // если встретилось число
      begin
        q:=true;                  // переключаем переключатель
        break;                    // выходим из вложенного цикла
      end;
    if q = false then // если переключатель не переключился (не встретилось число)
    begin
      writeln (j);    // выводим для наглядности первое число, которое не встретилось
      break;          // выходим из внешнего цикла
    end;
  end;
  result:= q;
end;

begin
  randomize();
  for f:=low(m) to high(m) do
  begin
    m[f] := random(23);
    write (m[f], ' ');
  end;
  writeln;
  writeln;
  k:= 19;
  u:= prov(m, k);
  if u = false then
    write ('Не все числа от 0 до ', k, ' встречаются в массиве')
  else
    write ('Все числа от 0 до ', k, ' встречаются в массиве');
  readln();
end.

Вывод в консоли:

13 11 21 22 5 7 4 21 19 12 12 0 1 18 1 8 0 16 7 0 20 1 0 10 15 17 7 4 8 6 9 15 0 19 15 14 16 5 7 7 2 9 19 14 1 10 11 2 6 12 20 5 9 15 4 16 7 8 5 5 11 17 5 1 12 10 0 6 15 12 
3
Не все числа от 0 до 19 встречаются в массиве
7 2 0 21 4 4 15 6 21 19 15 9 8 5 18 9 11 18 2 16 8 12 12 6 3 15 22 3 7 12 1 0 2 16 1 3 16 0 5 15 2 17 1 4 19 5 22 11 13 4 16 4 13 2 1 17 17 22 8 21 13 19 21 16 9 18 17 0 3 4 
10
Не все числа от 0 до 19 встречаются в массиве
19 6 15 17 18 7 18 3 17 11 4 22 9 15 13 1 20 13 17 19 0 10 9 2 21 15 1 14 19 20 19 9 16 4 9 10 14 1 13 6 7 1 0 2 5 2 22 10 9 16 11 18 22 12 7 17 8 5 14 13 2 15 13 18 22 11 0 19 2 0 
Все числа от 0 до 19 встречаются в массиве
vedro-compota's picture

засчитано

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