const nn=100; var M,C:array[1..nn] of integer; x,i,n,s,max:integer; m1,r:real; begin Write('x='); Read(x); Write('>'); s:=0; n:=0; for i:=1 to x do begin Read(M[i]); if M[i]>3 then begin s:=s+M[i]; n:=n+1 end end; if n>0 then m1:=s/n else m1:=0; max:=M[x]; for i:=x-1 downto x-9 do if M[i]>max then max:=M[i]; r:=max/m1; n:=0; for i:=1 to x do if M[i]>r then begin n:=n+1; C[n]:=M[i]; Write(C[n],' ') end; end.
2. PascalABC.NET 3.2, сборка 1370 от 24.12.2016 Если программа не работает, обновите версию!
begin var M:=ReadArrInteger('>',ReadInteger('x=')); var r:=(M.TakeLast(10).Max)/(M.Where(b->b>3).Average); var C:=M.Where(b->b>r).ToArray; C.Println end.
1. Переводим число в двоичную систему 168.625₁₀ = 10101000.101₂ 2. Сдвигаем точку влево так, чтобы она отделяла в целой части только одну цифру и фиксируем величину сдвига, как двоичный порядок 10101000.101₂ = 1.0101000101₂×2⁷ 3. Отбрасываем целую часть, получая мантиссу 0101000101₂ 4. Прибавляем к порядку 127 7+127 = 134₁₀ = 10000110₂ 5. Приписываем к порядку его знак - 0 (сдвиг был влево), получая 010000110₂ 6. Приписываем справа мантиссу и дополняем её нулями справа до 32 разрядов 01000011001010001010000000000000₂ = 01000011 00101000 10100000 00000000₂ 7. Переводим результат в шестнадцатиричную систему счисления, заменяя каждые 4 двоичных цифры соответствующей шестнадцатиричной 01000011 00101000 10100000 00000000₂ = 43 28 A0 00₁₆