//pascal abc.net v3.1 сборка 1172 const n=15; m=10; var ma: array[1..n,1..m] of integer; i,j,sum,co: integer; begin randomize; writeln('matrix: '); for i: =1 to n do begin for j: =1 to m do begin ma[i,j]: =random(10)-3; write(ma[i,j]: 4); end; writeln; end; for j: =1 to m do begin for i: =1 to n do if ma[i,j]> 0 then begin sum: =sum+ma[i,j]; inc(co); end; writeln('sum ',j,': ',sum); writeln('count ',j,': ',co); sum: =0; co: =0; end; end.
seletan1
03.05.2020
1. немного теории чтобы сравнить числа в разных системах счисления, нужно их к какой-нибудь одной. у нас системы счисления 2, 10, 8=2³, 16=2⁴. числа в системах по основанию 2ⁿ всегда проще всего сводить к системе счисления по основанию 2, поскольку при этом каждый исходный разряд числа заменяется n двоичными . т.е. перевод 8⇒2 сведется к замене каждой цифры тремя двоичными , а 16⇒2 - четырьмя. и единственной "неудобной" операцией у нас будет перевод 101₁₀⇒х₂ 2. собственно решение 21₈ = 10 001₂ = 10001₂ 12₁₆ = 1 0010₂ = 10010₂ 101/2 = 50, остаток 1 50/2 = 25, остаток 0 25/2 = 12, остаток 1 12/2 = 6, остаток 0 6/2 = 3, остаток 0 3/2 = 1, остаток 1 1/2 = 0, остаток 1 выписываем остатки в обратном порядке, получая 101₁₀=1100101₂ располагаем числа по убыванию: 1100101, 10010, 10001, 11 ответ: 101₁₀, 12₁₆, 21₈, 11₂