Задача 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
- 1281 reads
vedro-compota
Sun, 11/21/2021 - 13:22
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)