0505levon
12.08.2020 21:48

Что такое ключ-за что отвечает переменная? const N=20;
type Arr=array[1..N] of integer;
var
mid, left, right, key, i,j: integer;
A: Arr;
function BinarySearch(A: Arr; key: integer): integer;
begin
left:=1; right:=N;
while left<=right do
begin
mid:=left+(right-left) div 2;
If (keyA[mid]) then left:=mid+1
else begin BinarySearch:=mid; exit; end;
end;
BinarySearch:=-1;
end;
begin
write('Input number '); read(key);
write('Array: ');
for i:=1 to N do
begin
A[i]:=N*i;
write(A[i], ' ');
end;
writeln;
for i := 1 to n do
if key = A[i] then j := i;
if j = 0 then writeln('Linear: Not found')
else writeln('Linear Index: ', j);
if (BinarySearch(A, key)=-1) then write('Binary: Not found')
else write('Binary Index: ', BinarySearch(A, key));
end.

Сформируйте упорядоченный массив из не менее 20 элементов и выясните, существует ли число X и его позиция. Используйте линейный (последовательный) поиск и бисекционный поиск. Сравните количество шагов, необходимых для каждого метода.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
puh9999
23.02.2022 02:18
1. CDIX = 500-100+10-1=409,
CVXLIX = 100-5-10+50-1+10=144
MCCXIX = 1000+200+10-1+10=1219

2. 93710/2=46855(0)/2=23427(1)/2=11713(1)/2=5856(1)/2=2928(0)/2=1464(0)/2=
=732(0)/2=366(0)/2=183(0)/2=91(1)/2=45(1)/2=22(1)/2=11(0)/2=5(1)/2=2(1)/2=
=1(0)/2=0(1)
93710(10) = 10110111000001110(2)
Для перевода в восьмеричную систему двоичное число разбивают на тройки
 |010|110|111|000|001|110 =267016(8)
Для перевода в 16-ю, двоичное число разбивают на четверки
 |0001|0110|1110|0000|1110 =16E0E(16)

3. Для перевода восьмеричного числа в двоичное необходимо каждую цифру заменить эквивалентной ей двоичной триадой
764(8)=111110100(2)
312(8)=11001010(2)

4. а) 110101(2) =2°+2²+2⁴+2⁵=1+4+16+32=53(10)
б) 10110001(2) = 2°+2⁴+2⁵+2⁷=1+16+32+128=177(10)
в) 563(8) = 3*8°+6*8+5*8²= 3+48+320 =371 (10)
г) 635(8) = 5*8°+3*8+6*8²= 413(10)
д) АС4(16) = 4+12*16+10*16²=2756(10)
е) 9D5С(16) = 12+5*16+13*16²+9*16³=40284(10)
0,0(0 оценок)
Ответ:
maksgolovakha228
23.02.2022 02:18
Const n=5;
var i: integer;
b: real;
a: array [1..n] of integer;  {если его элементы целые числа (про тип чисел ничего не сказано в задании)}
begin 
           for i:=1 to n do
           read(a[i]);
           if ((a[1]+a[3]) mod 5 = 0) and (a[5] mod 10 = 3) then
           begin b:=0;
                     for i:=1 to 5 do
                     b:=b+sqr(a[i]);
           end
           else begin b:=1;
                            for i:=1 to 5 do
                            b:=b*sqrt(a[i]);
                   end;
writeln(b:1:2);        {округление до сотых}
if (a[1]+a[2]+a[3])>15 then writeln('да, сумма 1, 2 и 3 чисел больше 15')
else writeln('нет, сумма 1, 2 и 3 чисел меньше или равна 15');
if ((a[4]+a[5]) div 10>0) and ((a[4]+a[5]) div 100<0) then writeln('да, сумма 4 и 5 чисел - двузначное число')
else writeln('нет, сумма 4 и 5 чисел - не двузначное число');
readln; {чтобы была задержка до нажатия кнопки при выполнении программы и мы могли бы увидеть ответ}
end.
Решить можно и без использования массива.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота