1. Определяем мощность алфавита (количество символов в нем). 25 букв и 10 цифр составляют 35 различных знаков алфавита. 2. Найдем объем памяти, занимаемый одним номером. При кодировании "одинаковым и минимально возможным количеством битов" для записи кода одного из 35 символов потребуется 6 бит, поскольку 2⁵<35<2⁶ и 5 бит будет недостаточно. Тогда семисимвольный номер займет 7×6=42 бита. Но номера кодируются так, что они занимают целое количество байт. В байте 8 бит, поэтому 42 бита займут 42/8 ≈ 6 байт. 3. Найдем объем памяти под 80 номеров 80×6=480 байт.
// PascalABC.NET 3.3, сборка 1611 от 06.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var (n,m):= ReadInteger2('n, m -> '); var a:= MatrRandom(m,n);Writeln('Исходная матрица:');a.Println; dec(n);dec(m);for var i:= 0 to m do begin swap(a[i, a.Row(i).IndexMin],a[i, n]); swap(a[i, a.Row(i).IndexMax],a[i, 0]); end; Writeln('Конечная матрица:'); a.Print end.
25 букв и 10 цифр составляют 35 различных знаков алфавита.
2. Найдем объем памяти, занимаемый одним номером.
При кодировании "одинаковым и минимально возможным количеством битов" для записи кода одного из 35 символов потребуется 6 бит, поскольку
2⁵<35<2⁶ и 5 бит будет недостаточно. Тогда семисимвольный номер займет 7×6=42 бита. Но номера кодируются так, что они занимают целое количество байт. В байте 8 бит, поэтому 42 бита займут 42/8 ≈ 6 байт.
3. Найдем объем памяти под 80 номеров
80×6=480 байт.
// Внимание! Если программа не работает, обновите версию!
begin
var (n,m):= ReadInteger2('n, m -> ');
var a:= MatrRandom(m,n);Writeln('Исходная матрица:');a.Println;
dec(n);dec(m);for var i:= 0 to m do
begin
swap(a[i, a.Row(i).IndexMin],a[i, n]);
swap(a[i, a.Row(i).IndexMax],a[i, 0]);
end;
Writeln('Конечная матрица:');
a.Print
end.
Пример:
n, m -> 4 5
Исходная матрица:
95 62 11 82
91 98 80 6
21 73 62 70
36 25 89 22
44 42 80 65
Конечная матрица:
95 62 82 11
98 91 80 6
73 70 62 21
89 25 36 22
80 65 44 42