Только точный !
вычитание двоичных чисел:
производиться по таблице истинности
сводиться к выполнению двух действий: сдвигу запятой вправо и суммированию сдвинутых чисел
производится путем замены вычитания сложением в обратных или в дополнительных кодах
сводиться к сдвигу точки делимого на один разряд вправо
<html>
<body>
<table border="1" cellspacing="0" height="333" width="333">
<tr>
<td colspan="8"></td>
</tr>
<tr>
<td rowspan="6"></td>
<td colspan="6"></td>
<td rowspan="7"></td>
</tr>
<tr>
<td rowspan="4"></td>
<td colspan="4"></td>
<td rowspan="5"></td>
</tr>
<tr>
<td rowspan="2"></td>
<td colspan="2"></td>
<td rowspan="3"></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="3"></td>
</tr>
<tr>
<td colspan="5"></td>
</tr>
<tr>
<td colspan="7"></td>
</tr>
</table>
<br>
</body>
</html>
Объяснение:
картинка
A: array[1..100, 1..100] of integer;
B: array[1..100]of integer;
i, j, k, n, m, imax: integer;
manual: boolean;
begin
writeln('Ручной ввод (true/false)==>');
read(manual);
if manual then begin
writeln('Размер массива n, m ==>');
read(n, m);
end
else begin
n := random(10) + 5;
m := random(10) + 5;
end;
for i := 1 to n do
begin
writeln();
for j := 1 to m do
begin
if manual then
read(a[i, j])
else begin
a[i, j] := random(100) - 50;
write(a[i, j]:3, ' ');
end;
end;
end;
writeln();
writeln();
for j := 1 to m do
if j mod 2 = 1 then begin
k := k + 1;
b[k] := 1;
for i := 1 to n do
b[k] := b[k] * a[i, j];
write(b[k], ' ');
end;
writeln();
for i := 1 to k - 1 do
begin
imax := i;
for j := i + 1 to k do
if b[j] > b[imax] then
imax := j;
n := b[i];
b[i] := b[imax];
b[imax] := n;
end;
for i := 1 to k do
write(b[i], ' ');
end.