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

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

Дан массив длиной N (не более 100 элементов). Проверить, что в этом массиве на отрезке индексов от m до p ( 1≤m

type arr_d = array of integer;
  arr = array[1..50] of integer;
var first_array : arr;
  second_array : arr_d;
  m,p,k,n : integer;

function initialization_array(f_array: arr): arr;
var i : integer;
begin
  for i := low(f_array) to high(f_array) do
    f_array[i] := i;
  result := f_array;
end;

function initialization_array_d(s_array: arr_d): arr_d;
var y : integer;
begin
  for y := low(s_array) to high(s_array) do
    s_array[y] := y;
  result := s_array;
end;

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

procedure check_m(p: integer; var m: integer);
var t : integer;
begin
  t := 0;
  repeat
    if (m >= p) or (m < 1) then
      begin
        write('Введите корректное значение M!');
        readln();
      end
    else
        t += 1;
  until t > 1;
end;

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

procedure  check_availability(f_array: arr;s_array: arr_d; m,p: integer);
var c,z : integer;
begin
  for z := low(s_array) to high(s_array) do
    for c := m to p do
      if s_array[z] = f_array[c] then
        break
      else
        if (s_array[z] <> f_array[c]) and (c = p) then
          writeln('Число ', s_array[z],' в отрезке ',m,'-',p,' отсутствует!');
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;

begin
  n := 50;
  first_array := initialization_array(first_array);
  write('Введите K : ');
  readln(k);
  check_k(n,k);
  setlength(second_array,k+1);
  second_array := initialization_array_d(second_array);
  writeln('Ввведит M и P (1<=M<P<=N)');
  readln(m,p);
  check_p(n,m,p);
  check_m(p,m);
  print(first_array);
  writeln();
  check_availability(first_array,second_array,m,p);
  readln();
end.

консоль

Введите K : 20
Ввведит M и P (1<=M<P<=N)
5
30
|1||2||3||4||5||6||7||8||9||10||11||12||13||14||15||16||17|
|18||19||20||21||22||23||24||25||26||27||28||29||30||31|
|32||33||34||35||36||37||38||39||40||41||42||43||44||45|
|46||47||48||49||50|
Число 0 в отрезке 5-30 отсутствует!
Число 1 в отрезке 5-30 отсутствует!
Число 2 в отрезке 5-30 отсутствует!
Число 3 в отрезке 5-30 отсутствует!
Число 4 в отрезке 5-30 отсутствует!
Введите K : 5
Ввведит M и P (1<=M<P<=N)
1
10
|1||2||3||4||5||6||7||8||9||10||11||12||13||14||15||16||17|
|18||19||20||21||22||23||24||25||26||27||28||29||30||31|
|32||33||34||35||36||37||38||39||40||41||42||43||44||45|
|46||47||48||49||50|
Число 0 в отрезке 1-10 отсутствует!