Целая часть 10
10mod2=0
5mod2=1
2mod2=0
1
<span>Остаток от деления записываем в обратном порядке. Получаем число в 2-ой системе счисления:
</span>10=1010
Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
<span>0.45*2 = 0.9 (целая часть </span>0)
<span>0.9*2 = 1.8 (целая часть </span>1)
<span>0.8*2 = 1.6 (целая часть </span>1)
<span>0.6*2 = 1.2 (целая часть </span>1<span>) </span>
Получаем число в 2-ой системе счисления: 0111
0.45 = 0111
10,45=1010,0111
Для торговли всегда нужна письменность.
// PascalABC.NET 3.1, сборка 1230 от 27.04.2016
procedure MatPrint(a:array[,] of integer);
begin
var maxcol:=Length(a,1)-1;
for var i:=0 to Length(a,0)-1 do begin
for var j:=0 to maxcol do Print(a[i,j]);
Writeln
end
end;
begin
var m:=ReadInteger('Кол-во строк:');
var n:=ReadInteger('Кол-во столбцов:');
var t:=MatrixRandom(m,n,10,99); // инициализация матрицы
MatPrint(t);
var a:=new real[n]; // массив для средних по столбцам
for var j:=0 to n-1 do begin
var s:=0;
for var i:=0 to m-1 do s+=t[i,j];
a[j]:=s/m
end;
// cортированная последовательность индексов столбцов
var ai:=a.Select((x,i)->Rec(x,i)).SortedDescending
.Select(x->x.Item2).ToArray;
// cоздаем промежуточный массив
var u:array[,] of integer; SetLength(u,m,n);
for var j:=0 to n-1 do
for var i:=0 to m-1 do u[i,j]:=t[i,ai[j]];
t:=Copy(u); // вернем назад данные в исходный массив
Writeln;
MatPrint(t);
end.
<u><em>Тестовое решение</em></u>
Кол-во строк: 5
Кол-во столбцов: 8
24 30 70 85 92 32 11 25
83 92 64 51 28 47 10 22
50 14 76 84 23 63 64 39
30 22 84 59 55 32 58 63
80 36 53 74 80 82 84 33
85 70 92 24 32 11 30 25
51 64 28 83 47 10 92 22
84 76 23 50 63 64 14 39
59 84 55 30 32 58 22 63
74 53 80 80 82 84 36 33
Заменяем цифры числа
D 1101
8 1000
E 1110
C 1100
110110001110,1100
удаляем лишние нули
результат: 110110001110,11