function FirstNegative(a: V; n: integer): integer; var i: integer; begin i := 0; Result := 0; repeat i := i + 1; if a[i] < 0 then Result := i until (Result > 0) or (i > lim) end;
procedure InpMass(var a: V; var n: integer; mName: string); // Организует ввод массива var i, p: integer; begin writeln('Вводите элементы массива ' + mName + '; 7777 - конец ввода'); i := 0; repeat read(p); i := i + 1; if p <> 7777 then a[i] := p; until (p = 7777) or (i > lim); n := i - 1 end;
var a, b: V; m, n, p, q: integer;
begin InpMass(a, m, 'A'); InpMass(b, n, 'B'); p := FirstNegative(a, m); q := FirstNegative(b, n); if p <= q then writeln('Номер первого отрицательного элемента в массива А: ', p) else writeln('Номер первого отрицательного элемента в массива B: ', q) end.
Тестовое решение:
Вводите элементы массива A; 7777 - конец ввода 37 14 -25 32 30 -29 38 27 7777 Вводите элементы массива B; 7777 - конец ввода 33 -36 23 -17 -3 -16 -33 33 -48 -39 30 7777 Номер первого отрицательного элемента в массива B: 2
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₁₆
lim = 11;
type
V = array[1..lim] of integer;
function FirstNegative(a: V; n: integer): integer;
var
i: integer;
begin
i := 0;
Result := 0;
repeat
i := i + 1;
if a[i] < 0 then Result := i
until (Result > 0) or (i > lim)
end;
procedure InpMass(var a: V; var n: integer; mName: string);
// Организует ввод массива
var
i, p: integer;
begin
writeln('Вводите элементы массива ' + mName + '; 7777 - конец ввода');
i := 0;
repeat
read(p);
i := i + 1;
if p <> 7777 then a[i] := p;
until (p = 7777) or (i > lim);
n := i - 1
end;
var
a, b: V;
m, n, p, q: integer;
begin
InpMass(a, m, 'A');
InpMass(b, n, 'B');
p := FirstNegative(a, m);
q := FirstNegative(b, n);
if p <= q then writeln('Номер первого отрицательного элемента в массива А: ', p)
else writeln('Номер первого отрицательного элемента в массива B: ', q)
end.
Тестовое решение:
Вводите элементы массива A; 7777 - конец ввода
37 14 -25 32 30 -29 38 27 7777
Вводите элементы массива B; 7777 - конец ввода
33 -36 23 -17 -3 -16 -33 33 -48 -39 30 7777
Номер первого отрицательного элемента в массива B: 2