Const n=20;
var
a:array[1..n] of integer;
i,j,t,x,i1,i2:integer;
begin
Randomize;
Writeln('Исходный массив:');
for i:=1 to n do begin
a[i]:=Random(21);
Write(a[i],' ')
end;
Writeln;
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]<a[j+1] then begin
t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t
end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln;
write('x = ');
readln(x);
i1:=1;
i2:=n;
repeat
i:=(i1+i2) div 2;
if a[i]>x then i1:=(i1+i2) div 2+1;
if a[i]<x then i2:=(i1+i2) div 2-1;
until (a[i]=x)or(i1>i2);
if a[i]=x then begin
writeln('Искомый(ые) номер(а) элемента(ов):');
while (i>0)and(a[i]=x) do
i:=i-1;i:=i+1;
while (i<=n)and(a[i]=x) do begin
write(i,' '); i:=i+1; <span>end;</span>
end
else writeln('Элемент не найден');
writeln;
end.
Pascal ABC.
Задачка интересная, исследуем её.
Понятно, что программ будет 8. Но в задаче спрашивается, сколько разных чисел получится из двойки, поэтому нужно исследовать каждую программу
1. +++ (((2 +2) +2) +2 = 8
2. ++* (((2 +2) +2) *3 = 18
3. +*+ (((2 +2) *3) +2 = 14
4. *++ (((2 *3) +2) +2 = 10
5. *** (((2 *3) *3) *3 = 54
6. **+ (((2 *3) *3) +2 = 20
7. *+* (((2 *3) +2) *3 = 24
8. +** (((2 +2) *3) *3 = 36
Вот только теперь можно сказать что из 2 можно получить 8 разных чисел.
PS Арифметику проверь, писал напрямую в экран, мог допустить неточность.
<span> 1) 15, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 14;</span>