Значащие нули в позиционных СС - это те нули (ну аналогично и единицы, девятки...) которые стоят до последней цифры с конца числа (то есть первой). Суть в том, что после этой самой цифры может быть ещё сколько угодно нулей, но они уже не значащие здесь один значащий нуль, третий с конца
Алгоритм перевода из десятичной СС в двоичную найдёте на картинке ниже:)
В данном случае (1000001) здесь пять значащих нулей, а остальные, которых бесконечность и которые обычно не записывают, не в счёт ============================ , 4 значащих нуля
annanechaeva567
31.12.2020
Program Example;
const r = 20;
type tM = array[1..r, 1..r]of integer;
function GetMax(var a: tM; n: integer; m: integer): integer; // Возвращает значение максимального элемента в строке n массива а var j, max: integer; begin max := -32767; for j := 1 to m do if max < a[n, j] then max := a[n, j]; GetMax := max end;
function SumMax(var a: tM; n: integer; m: integer; p: integer; q: integer): integer; // Проверяет условие n<=r, m<=r, при нарушении возвращает значение -32768 // Полагает, что массив [1..n,1..m] размещен внутри массива a[1..r,1..r] // Заполняет выбранную область массива А случайными числами из диапазона (p;q) // Возвращает значение суммы максимальных элементов четных строк выбранной области.
var i, j, s: integer; begin if (n > r) or (m > r) then SumMax := -32767 else begin Randomize; for i := 1 to n do for j := 1 to m do a[i, j] := random(p + q) - p; s := 0; i := 2; while i <= n do begin s := s + GetMax(a, i, m); i := i + 2 end; SumMax := s end end;
begin sum := SumMax(A, n1, m1, -30, 60); writeln('Массив A[1..', m1, ',1..', n1, ']'); for i := 1 to n1 do begin for j := 1 to m1 do write(A[i, j]:4); writeln; end; writeln('Сумма максимумов четных строк массива A равна ', sum); sum := SumMax(A, n2, m2, 0, 90); writeln('Массив B[1..', m2, ',1..', n2, ']'); for i := 1 to n2 do begin for j := 1 to m2 do write(A[i, j]:4); writeln; end; writeln('Сумма максимумов четных строк массива B равна ', sum); sum := SumMax(A, n3, m3, 20, 50); writeln('Массив C[1..', m3, ',1..', n3, ']'); for i := 1 to n3 do begin for j := 1 to m3 do write(A[i, j]:4); writeln; end; writeln('Сумма максимумов четных строк массива C равна ', sum); end.