Потому что условный оператор проверяет выражение на истинность. Если истина то выполнится одна ветка, если ложь то другая ветка конструкции ветвления.
Так воооооооооооооот
МОЩ Н ОСТЬ
Const
n = 10;
var
i, c: integer;
a, w: array[1..n] of integer;
begin
randomize;
writeln('Исходный массив:');
for i := 1 to n do
begin
a[i] := random(201) - 100;
write(a[i], ' ');
end;
writeln;
c := 0;
for i := 1 to n do
if a[i] > 0 then
begin
c := c + 1;
w[c] := a[i];
end;
writeln('Кол-во положительных элементов: ', c);
for i := 1 to n do
begin
if a[i] <= 0 then
begin
c := c + 1;
w[c] := a[i];
end;
end;
writeln('Результат:');
for i := 1 to c do
write(w[i], ' ');
end.
В условии задачи есть ошибка (или неверная запись). Должно быть так:
<span>Используя m двоичных разрядов можно закодировать N=2^m (2 в степени m) независимых значений/
Для кодирования 64 различных значений необходимо 6 двоичных разрядов (2^6=64)</span>
<em>// PascalABC.NET 3.2, сборка 1437 от 03.05.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
a:=a.SortedDescending.ToArray; a.Println;
Writeln('П=',a.Where(k->k mod 7=0).DefaultIfEmpty
.Aggregate(1,(i,j)->i*j))
end.
<u>Пример</u>
n= 15
80 -59 89 66 -88 -50 -16 -30 -65 -75 28 -51 56 35 36
89 80 66 56 36 35 28 -16 -30 -50 -51 -59 -65 -75 -88
П=54880
begin
var b:=ArrRandom(ReadInteger('n='),-99,99); b.Println;
b:=b+Arr(b.Sum); b.Println
end.
<u>Пример</u>
n= 15
-36 98 64 -21 -8 57 -52 56 -58 -66 -1 -60 13 22 -79
-36 98 64 -21 -8 57 -52 56 -58 -66 -1 -60 13 22 -79 -71
begin
var c:=ArrRandom(ReadInteger('n='),-99,99); c.Println;
var a:=ReadInteger('a=');
var b:=c.Where(x->x>a).ToArray;
Write('B[',b.Count,']='); b.Println
end.
<u>Пример</u>
n= 16
58 -91 12 -48 -42 1 -73 5 -47 99 -80 55 -10 31 -62 0
a= 10
B[5]=58 12 99 55 31