ответ: 10. Сообщение, записанное буквами из 64-х символьного алфавита, содержит 20 символов.
Какой объём оно несёт?
Дано:
N = 64 символа
K = 20 символов
lc =?
Найти:
Какой объём оно несёт?
Из формулы N = 2i определим вес 1 символа алфавита: 64 = 2^i → 64 = 2^6 → i^6. Из формулы lc = Kxi определим количество информации в сообщении lc = 20x6 = 120 бит
ответ: Сообщение несёт 120 бит информации.
9. Сообщение занимает 3 страницы по 25 строк. В каждой строке по 60 символов. Сколько символов в использованном алфавите, если всё сообщение содержит 1125 байтов?
Дано:
Iт = 1125 байтов
x = 25 – количество строк
y = 60 – количество символов в строке
M = 3 – количество страниц
Найти:
N = ?
1) N = 2i, неизвестно I; 2) Iт = K*I, I = Iт/K; 3) K = x * y * M = 25 * 60 * 3 = 4 500 символов – в тексте; 4) I = Iт/K = 1 125 * 8/ 4500 = 2 бита – объём одного символа; 5) N = 22 = 4 символа – в алфавите.
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016 begin var F,G:file of integer; Assign(F,'FFile.dat'); Rewrite(F); for var i:=1 to 30 do Write(F,Random(-20,20)); // Файл F создан и заполнен Assign(G,'GFile.dat'); Rewrite(G); F.Seek(0); var e:integer; Print('F:'); while not F.Eof do begin Read(F,e); Print(e); if e>0 then Write(G,e) end; F.Seek(0); while not F.Eof do begin Read(F,e); if e<0 then Write(G,e) end; F.Seek(0); while not F.Eof do begin Read(F,e); if e=0 then Write(G,e) end; F.Close; Writeln; Print('G:'); G.Seek(0); while not G.Eof do begin Read(G,e); Print(e) end; G.Close end.
Данное решение неоптимально по времени, поскольку файл читается трижды. Можно сделать иной вариант, читая данные за один проход и помещая в две вс структуры памяти отрицательные и нулевые элементы.
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016 begin var F,G:file of integer; Assign(F,'FFile.dat'); Rewrite(F); for var i:=1 to 30 do Write(F,Random(-20,20)); // Файл F создан и заполнен Assign(G,'GFile.dat'); Rewrite(G); var n:=F.FileSize; var neg,zer:array of integer; SetLength(neg,n); SetLength(zer,n); F.Seek(0); var e:integer; var ineg:=0; var izer:=0; Print('F:'); while not F.Eof do begin Read(F,e); Print(e); if e>0 then Write(G,e) else if e<0 then begin neg[ineg]:=e; Inc(ineg) end else begin zer[izer]:=e; Inc(izer) end end; F.Close; Writeln; SetLength(neg,ineg); foreach e in neg do Write(G,e); SetLength(zer,izer); foreach e in zer do Write(G,e); Print('G:'); G.Seek(0); while not G.Eof do begin Read(G,e); Print(e) end; G.Close end.
ответ: 10. Сообщение, записанное буквами из 64-х символьного алфавита, содержит 20 символов.
Какой объём оно несёт?
Дано:
N = 64 символа
K = 20 символов
lc =?
Найти:
Какой объём оно несёт?
Из формулы N = 2i определим вес 1 символа алфавита: 64 = 2^i → 64 = 2^6 → i^6. Из формулы lc = Kxi определим количество информации в сообщении lc = 20x6 = 120 бит
ответ: Сообщение несёт 120 бит информации.
9. Сообщение занимает 3 страницы по 25 строк. В каждой строке по 60 символов. Сколько символов в использованном алфавите, если всё сообщение содержит 1125 байтов?
Дано:
Iт = 1125 байтов
x = 25 – количество строк
y = 60 – количество символов в строке
M = 3 – количество страниц
Найти:
N = ?
1) N = 2i, неизвестно I; 2) Iт = K*I, I = Iт/K; 3) K = x * y * M = 25 * 60 * 3 = 4 500 символов – в тексте; 4) I = Iт/K = 1 125 * 8/ 4500 = 2 бита – объём одного символа; 5) N = 22 = 4 символа – в алфавите.
ответ: в алфавите 4 символа.