- •Задача 1
- •Задача 2
- •Задача 3.
- •I : integer; { параметр цикла }
- •Задача 4.
- •I : integer; { параметр цикла }
- •Задача 5
- •I : integer; { параметр цикла }
- •Задача 6.
- •I, j : integer; { параметры циклов }
- •Задача 7.
- •Задача 8.
- •I, j : integer; { параметры циклов }
- •Задача 9
- •I : integer; { параметр цикла }
- •Задача 10
Задача 7.
const
MAX = 100;
type
TArray = array[1..MAX] of real;
var
n : integer; { количество элементов массива }
A : TArray; { массив исходных данных }
i : integer;
l, r : integer;
min_el, max_el : real; { минимальный и максимальный элементы }
begin
{ ввод исходных данных }
repeat
write('Введите количество элементов массива, N: ');
readln(n);
until (n > 2) and (n <= MAX);
writeln('Ввод элементов массива:');
for i:=1 to n do read(A[i]);
writeln;
{ поиск минимального элемента }
l := 2;
r := n-1;
while l <= r do
begin
i := (l + r) div 2;
if A[i-1] > A[i+1] then l := i + 1
else r := i - 1;
end;
min_el := A[i];
{ поиск максимального элемента }
l := 2;
r := n-1;
while l <= r do
begin
i := (l + r) div 2;
if A[i-1] < A[i+1] then l := i + 1
else r := i - 1;
end;
max_el := A[i];
writeln('Минимальный элемент: ', min_el:0:4);
writeln('Максимальный элемент: ', max_el:0:4);
end.
Задача 8.
const
MAX = 100;
type
TArray = array[1..MAX] of real;
var
n, m : integer; { количество элементов массива }
I, j : integer; { параметры циклов }
A, B : TArray; { массивы исходных данных }
k : integer; { количество барьерных элементов }
begin
{ ввод исходных данных }
repeat
write('Введите количество элементов массива A, N: ');
readln(n);
until (n > 0) and (n <= MAX);
writeln('Ввод элементов массива A:');
for i:=1 to n do read(A[i]);
writeln;
repeat
write('Введите количество элементов массива B, M: ');
readln(m);
until (m > 0) and (m <= MAX);
writeln('Ввод элементов массива B:');
for i:=1 to m do read(B[i]);
writeln;
i := 1; { индекс в массиве A }
j := 1; { индекс в массиве B }
k := 0; { количество совпадений }
while (i <= n) and (j <= m) do
begin
if A[i] = B[j] then
begin
write(i, ' '); { вывести индекс элемента массива A }
i := i + 1;
j := j + 1;
k := k + 1;
end
else
if A[i] < B[j] then
i := i + 1 { перейти к следующему элементу в массиве A }
else
j := j + 1; { перейти к следующему элементу в массиве B }
end;
if k = 0 then writeln('Нет совпадений.')
else writeln;
end.
Задача 9
const
MAX = 100;
type
TArray = array[1..MAX] of integer;
var
n : integer; { количество элементов массива }
I : integer; { параметр цикла }
A : TArray; { массив исходных данных }
{ функция поиска в массиве Arr, содержащего n элементов, числа i которое удовлетворяет условию A[i] = i. В случае отсутствия такого числа возвращается -1. Функция использует метод половинного деления }
function search(const Arr : TArray; n : integer) : integer;
var
l, r, i : integer;
begin
l := 1;
r := n;
while l <= r do
begin
i := (l + r) div 2;
if Arr[i] = i then
begin
search := i;
exit;
end
else
if Arr[i] < i then l := i + 1
else r := i - 1;
end;
search := -1;
end;
begin
{ ввод исходных данных }
repeat
write('Введите количество элементов массива A, N: ');
readln(n);
until (n > 0) and (n <= MAX);
writeln('Ввод элементов массива A:');
for i:=1 to n do read(A[i]);
writeln;
i := search(A, n);
if i = -1 then writeln('Число i не найдено.')
else writeln('Число i равно ', i);
end.