Pascal отсортировать по возрастанию положительные элементы массивы вывести исходный и изменить массивы можно использовать любой метод сортировки массив заполнить случайными положительными и отрицательными целым числами
//Лень было расписывать быструю сортировку, так что вот "пузырёк" //Pascal ABC.NET 3.1 сборка 1219
Const n=10;
Var i:integer;
procedure booblesort(var ar:array of integer;n:integer); Var i,j:integer; begin for i:=0 to n-1 do for j:=i+1 to n do if (ar[i]>ar[j]) and (ar[i]>0) and (ar[j]>0) then swap(ar[i],ar[j]); end;
begin randomize; var ar:=ArrRandomInteger(n,-10,10); writeln('First array:'); ar.Println; booblesort(ar,n-1); writeln('Final array:'); ar.println; end.
Пример работы программы: First array: -9 -5 5 -9 4 -3 -9 4 10 8 Final array: -9 -5 4 -9 4 -3 -9 5 8 10
Количество информации можно определить как -log2(p), где p - вероятность данного события. Оно измеряется в битах. Также можно использовать равносильное выражение log2(1/p) Вероятность взятия чёрного шара равна 10/20 = 0,5, белого - 4/20 = 0,2, жёлтого такая же - 0,2, красного - в 2 раза меньше - 0,1. Значит, если мы взяли чёрный шар, мы получили кол-во информации log2(1/0,5) = log2(2) = 1 бит, если белый, то log2(1/0,2) = log2(5) = 2,3219 бит если жёлтый, то столько же 2,3219 бит если красный, то log2(1/0,1) = log2(10) = 3,3219 бит
//Pascal ABC.NET 3.1 сборка 1219
Const
n=10;
Var
i:integer;
procedure booblesort(var ar:array of integer;n:integer);
Var i,j:integer;
begin
for i:=0 to n-1 do
for j:=i+1 to n do
if (ar[i]>ar[j]) and (ar[i]>0) and (ar[j]>0) then swap(ar[i],ar[j]);
end;
begin
randomize;
var ar:=ArrRandomInteger(n,-10,10);
writeln('First array:');
ar.Println;
booblesort(ar,n-1);
writeln('Final array:');
ar.println;
end.
Пример работы программы:
First array:
-9 -5 5 -9 4 -3 -9 4 10 8
Final array:
-9 -5 4 -9 4 -3 -9 5 8 10