--- PascalABC.NET 3.6.2 ---
begin
var A := ArrRandom(23, -99,99);
A.Where(p -> p mod 2 <> 0).Sorted.Println.Count.Println;
end.
Да, это полноценная работающая программа, решающая вашу задачу.
Для определённости, пусть есть мини-таблица, где в ячейках верхней строки- названия этих переменных (x, y, z).
В нижней строке, в ячейки под икс и игрек- вводите числа- значения этих двух переменных, а в ячейку под зет- вводите формулу для вычисления значения этого выражения:
=(1+x)/4/y
Только вместо x и y вводим ссылки на ячейки с этими значениями.
Можно чуть по другому её записать, если хотите:
=(1+x)/(4*y)
После набора формулы вводите её нажатием клавиши Enter, и в этой ячейке вычислится и отобразится значение зет.
Уточнение: в формуле вместо букв x и y надо вставлять ссылки на ячейки, в которых находятся значения переменных x и y. Можно конечно сделать чтобы напрямую работала указанная формула с буквами x и y, но для этого надо задать такие имена ячейкам, содержащим значения этих переменных, тогда будет работать.
если числа изначально в 10 системе:
array = list(map(int, input().split())); res = 0; res1 = 0 #ввод и переменные
for i in array:
if len(bin(i)[2:]) == 4: res += i; res1 += 1 #пробегаемся по массиву и смотрим подходит ли элемент в двоичном представлении
try:
print(res / res1) #если не было подходящих будет деление на 0, поэтому я использовал try except
except: print(0) #ну если все же подходящих не было выводим 0
если уже в 2:
array = list(map(int, input().split())); res = 0; res1 = 0
for i in array:
if len(str(i)) == 4: res += i; res1 += 1
try:
print(res / res1)
except: print(0)
Вроде бы как-то так
Объяснение:
program odd;
var
arr1, arr2: array[1..23] of integer;
i, cnt, tmp, buffer: integer;
begin
writeln('исходный массив:');
for i := 1 to 23 do
begin
arr1[i] := random(100);
write(arr1[i], ' ');
end;
writeln();
cnt := 0; //считем сколько нечетных, переносим в другой массив
for i := 1 to 23 do
begin
if arr1[i] mod 2 <> 0 then
begin
cnt := cnt + 1;
arr2[cnt] := arr1[i];
end;
end;
//сортируем arr2 пузырьком
for i := (cnt - 1) downto 1 do
begin
tmp := i;
while ((tmp < cnt) and (arr2[tmp] > arr2[tmp + 1])) do
begin
//swap
buffer := arr2[tmp];
arr2[tmp] := arr2[tmp + 1];
arr2[tmp + 1] := buffer;
tmp := tmp + 1;
end;
end;
Writeln('отсортированные нечетные:');
for i := 1 to cnt do
write(arr2[i], ' ');
writeln();
writeln('всего: ', cnt);
end.