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

Урок 15

Дан массив длиной N (где 10 такой что на нем встречаются все числа от 0 до k, где 0 В качестве ответа (если отрезок найден) получите его начальный и конечных
индекс - m и p ( 1

type myArr = array of integer;
var n,k, m, p: integer;
    a: myArr;

procedure printArray(a1: myArr); //п-а печати массива
  var i1: integer;

  begin
    for i1 := low(a1) to high(a1) do
      write(a1[i1], ' ');
  end;

function f1(n1: integer; a1: myArr): myArr; // ф-я создаем массив размером N
  var i1: integer;

  begin
    SetLength(a1, n1); // устанавливаем новую длину массива
    randomize();
    for i1 := low(a1) to high(a1) do //создаем массив и
      a1[i1] := random(n1 + 1);
    result := a1;
  end;

function f2(k1: integer; a1: myArr): boolean; //ф-я проверки, что есть все числа
  var i1, j1: integer;
      s: boolean;

  begin
    s := false;
    for i1 := 0 to k1 do
    begin
      s := false;
      for j1 := low(a1) to high(a1) do
        if i1 = a1[j1] then
        begin
          s := true;
          break;
        end;
      if s = false then
        break;
    end;
    result := s;
  end;

function f3(k1: integer; a1: myArr): string; //ф-я индекса отрезков
  var i1, j1, m1{начало отрезка}, p1{конец отрезка}: integer;
      s1, s2: string;

  begin
    m1 := high(a1);
    p1 := low(a1);
    for i1 := 0 to k1 do
    begin
      for j1 := low(a1) to high(a1) do
      begin
        if (i1 = a1[j1]) and (j1 < m1) then
        begin
          m1 := j1;
        end;
        if (i1 = a1[j1]) and (j1 > p1) then
        begin
          p1 := j1;
        end;
      end;
    end;
    str(m1, s1);
    str(p1, s2);
    result := (s1 + ' - ' + s2);
  end;

  begin
    randomize();
    n := random(90) + 10;
    k := random(3);
    writeln('Новое значение k = ',k);
    a := f1(n, a);
    printArray(a);
    writeln();
    writeln('Все значения встречаются: ', (f2(k, a)));
    if (f2(k, a)) then
      write('на отрезке: ', f3(k, a));
    readln();
  end.

КОНСОЛЬ

Новое значение k = 1
19 19 25 1 24 37 26 3 33 6 1 21 20 17 27 14 35 11 0 3 44 3 24 5 0 19 10 43 1 47 35 17 20 21 47 19 28 9 2 1 2 40 38 5 10 0 24
Все значения встречаются: TRUE
на отрезке: 3 - 45
vedro-compota's picture

засчитано

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