Дано
N-128
<u>K - 20
</u>Найти i -?
I - ?
Решение:
Находим информационный вес символа по формуле N=2^i
i=7 бит
Теперь объем информации по формуле:
I=K*i
20*7=140 бит
<em>// PascalABC.NET 3.3, сборка 1625 от 17.01.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var n:=ReadInteger('n=');
var a:=ArrRandom(n,-10,10);
for var i:=0 to n-2 do Write('A[',i+1,']=',a[i],', ');
Writeln('A[',n,']=',a[n-1]);
Writeln('Четных элементов- ',a.Where(t->t.IsEven).Count);
a.Transform(t->t<0?1:0); a.Println;
end.
<u>Пример</u>
n= 13
A[1]=-10, A[2]=-2, A[3]=-8, A[4]=6, A[5]=-1, A[6]=3, A[7]=-10, A[8]=-3, A[9]=-6, A[10]=5, A[11]=7, A[12]=-3, A[13]=5
Четных элементов- 6
1 1 1 0 1 0 1 1 1 0 0 1 0
div-целочисленное деление:
18 div 8=2
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.
А какой ребус отправь я решу