Для определения информационного объема сообщения воспользуемся формулой: I = K * i, где K - количество символов, i - вес одного символа.
1) 1024 страницы, на одной странице помещается 64 строки, а в строке помещается 64 символа. Каждый символ в кодировке КОИ-8 занимает 8 бит памяти.
i = 8 бит
K = 1024 * 64 * 64 = 4194304 символов,
I = 4194304 * 8 = 33554432 бит = 4194304 байт = 4096 Кбайт = 4 Мбайт
2) 512 страниц, на одной странице в среднем помещается 64 строки, а в строке 64 символа. (Каждый символ в кодировке Unicode занимает 16 бит памяти.)
i = 16 бит
K = 512 * 64 * 64 = 2097152 символов,
I = 2097152 * 16 = 33554432 бит = 4194304 байт = 4096 Кбайт = 4 Мбайт
*8 бит = 1 байт
1024 байт = 1 Кбайт
1024 Кбайт = 1 Мбайт
// Внимание! Если программа не работает, обновите версию!
function MasInput(s:string; m,n:integer):array[,] of integer;
begin
Writeln('Введите построчно элементы массива ',s,'[',m,',',n,']');
Result:=ReadMatrInteger(m,n)
end;
procedure MasPrint(s:string; a:array[,] of integer; k:integer:=5);
begin
Writeln('*** Полученный массив ',s,' ***');
a.Println(5);
Writeln(5*a.ColCount*'=')
end;
procedure MasTransform(var a:array[,] of integer);
begin
var s:=a.Cols.Select(col->col.Any(t->t=0));
var k:=s.Where(t->t).Count;
if k>0 then begin
var ns:=a.ColCount-1; // номер передающей колонки
var s1:=s.Numerate.Where(t->t[1]).Select(t->t[0]-1);
var St:=new Stack<integer>;
foreach var t in s1 do St.Push(t);
SetLength(a,a.RowCount,a.ColCount+k);
var nt:=a.ColCount-1; // номер принимающей колонки
for var i:=ns downto 0 do
if St.Count>0 then
if St.Peek=i then begin
a.SetCol(nt,ArrFill(a.RowCount,1));
a.SetCol(nt-1,a.Col(i));
nt-=2; St.Pop
end
else begin
a.SetCol(nt,a.Col(i));
nt-=1
end
end;
end;
begin
var a:=MasInput('A',4,5);
MasTransform(a);
MasPrint('A',a);
var b:=MasInput('B',5,5);
MasTransform(b);
MasPrint('B',b);
var c:=MasInput('C',5,4);
MasTransform(c);
MasPrint('C',c)
end.
Пример
Введите построчно элементы массива A[4,5]
3 5 6 3 8
6 4 0 1 3
-2 0 0 4 1
2 3 5 -7 0
*** Полученный массив A ***
3 5 1 6 1 3 8 1
6 4 1 0 1 1 3 1
-2 0 1 0 1 4 1 1
2 3 1 5 1 -7 0 1
Введите построчно элементы массива B[5,5]
1 6 3 9 2
2 4 8 5 7
1 3 1 4 5
3 5 7 6 4
8 9 2 7 3
*** Полученный массив B ***
1 6 3 9 2
2 4 8 5 7
1 3 1 4 5
3 5 7 6 4
8 9 2 7 3
Введите построчно элементы массива C[5,4]
2 3 -1 -2
0 6 7 9
3 4 8 6
7 -2 2 -5
4 0 1 7
*** Полученный массив C ***
2 1 3 1 -1 -2
0 1 6 1 7 9
3 1 4 1 8 6
7 1 -2 1 2 -5
4 1 0 1 1 7