Задача 16 Урок 15
Primary tabs
Дан массив длиной 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
- Log in to post comments
- 1012 reads
vedro-compota
Sun, 11/21/2021 - 13:22
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)