1.Из условия задачи «Для кодирования секретного сообщения используются 12 специальных значков-символов. При этом символы кодируются одним и тем же минимально возможным количеством бит. следует, что для кодирования используется алфавит, мощность которого равна N=12 (все символы алфавита равнозначны). Тогда информационный вес символов одинаков и вычисляется по формуле Хартли i=log212=4 бита. Тогда информационный объем сообщения, согласно алфавитному подходу, измеряется по формуле V=i*k. Значение i мы уже нашли, а k по условию задачи равно 256. Получаем: V=4 (бита)×256 (символов) =1024 (бита) = 128 (байта).
2.всего используется 26 букв + 10 цифр = 36 символов для кодирования 36 вариантов необходимо использовать 6 бит, так как 2^5=32<36<2^6=64, т.е. пяти бит не хватит (они позволяют кодировать только 32 варианта), а шести уже достаточно таким образом, на каждый символ нужно 6 бит (минимально возможное количество бит). полный номер содержит 7 символов, каждый по 6 бит, поэтому на номер требуется 6 x 7 = 42 бита. По условию каждый номер кодируется целым числом байт (в каждом байте – 8 бит), поэтому требуется 6 байт на номер (5x8=40<42<6x8=48), пяти байтов не хватает, а шесть – минимально возможное количество на 20 номеров нужно выделить 20x6=120 байт. ответ: 120 байт.
3. Всего клеток 8х8 = 64. Для кодирования 1 клетки необходимо 6 бит (2^6=64). В записи решения будет описано 12 клеток (11 ходов+начальная позиция). Объем информации записи 12х6 = 72 бита = 72:8 = 9 байт. ответ: 9 байт.
uses crt; var a:array[1..10] of real; i:integer; begin for i:=1 to 10 do begin a[i]:=random*9 - 4; end; for i:=3 to 7 do begin writeln('a[',i,']=',a[i]:0:2); end; writeln('Press enter'); readln; end.
Пояснения:
у тебя в условии промежуток [4,5) означает что 5 нельзя включать (скорее всего ошибка).
Есл это не ошибка переписывания условия , то добавляется еще одна линия, и программа получается:
uses crt; var a:array[1..10] of real; i:integer; begin randomize; for i:=1 to 10 do begin a[i]:=random*9 - 4; if(a[i]=5) then a[i]:=4.9999; end; for i:=3 to 7 do begin writeln('a[',i,']=',a[i]:0:2);
end; writeln('Press enter'); readln; end.
Обрати внимание, я еще добавил randomize; команду - она гарантирует, что случайные числа будут именно случайными
1.Из условия задачи «Для кодирования секретного сообщения используются 12
специальных значков-символов. При этом символы кодируются одним и тем же минимально возможным количеством бит. следует, что для кодирования используется алфавит, мощность которого равна N=12 (все символы алфавита равнозначны). Тогда информационный вес символов одинаков и вычисляется по формуле Хартли i=log212=4 бита. Тогда информационный объем сообщения, согласно алфавитному подходу, измеряется по формуле V=i*k. Значение i мы уже нашли, а k по условию задачи равно 256.
Получаем: V=4 (бита)×256 (символов) =1024 (бита) = 128 (байта).
2.всего используется 26 букв + 10 цифр = 36 символов для кодирования 36 вариантов необходимо использовать 6 бит, так как 2^5=32<36<2^6=64, т.е. пяти бит не хватит (они позволяют кодировать только 32 варианта), а шести уже достаточно таким образом, на каждый символ нужно 6 бит (минимально возможное количество бит).
полный номер содержит 7 символов, каждый по 6 бит, поэтому на номер требуется 6 x 7 = 42 бита.
По условию каждый номер кодируется целым числом байт (в каждом байте – 8 бит), поэтому требуется 6 байт на номер (5x8=40<42<6x8=48), пяти байтов не хватает, а шесть – минимально возможное количество на 20 номеров нужно выделить 20x6=120 байт.
ответ: 120 байт.
3. Всего клеток 8х8 = 64. Для кодирования 1 клетки необходимо 6 бит (2^6=64). В записи решения будет описано 12 клеток (11 ходов+начальная позиция). Объем информации записи 12х6 = 72 бита = 72:8 = 9 байт.
ответ: 9 байт.
4. 76 символов = 76 байт, 76 байт * 8 = 608 бит.
ответ: 608 бит.
5. на один символ было 16 бит, стало 8, таким образом:
8x=16x-240, отсюда:
x=30 символов
6. 4096 = 1024⋅4, 16 бит = 2 байта, 8 бит = 1 байт
Было в Unicode: 212 * 2 = 213 байт
Стало в Windows-1251: 212 байт.
Объём файла уменьшился на 213 байт - 212 байт = 212 байт = 4 Кбайта
ответ: 4.
вот код:
uses crt;
var a:array[1..10] of real;
i:integer;
begin
for i:=1 to 10 do
begin
a[i]:=random*9 - 4;
end;
for i:=3 to 7 do
begin
writeln('a[',i,']=',a[i]:0:2);
end;
writeln('Press enter');
readln;
end.
Пояснения:
у тебя в условии промежуток [4,5) означает что 5 нельзя включать (скорее всего ошибка).
Есл это не ошибка переписывания условия , то добавляется еще одна линия, и программа получается:
uses crt;
var a:array[1..10] of real;
i:integer;
begin
randomize;
for i:=1 to 10 do
begin
a[i]:=random*9 - 4;
if(a[i]=5) then a[i]:=4.9999;
end;
for i:=3 to 7 do
begin
writeln('a[',i,']=',a[i]:0:2);
end;
writeln('Press enter');
readln;
end.
Обрати внимание, я еще добавил randomize; команду - она гарантирует, что случайные числа будут именно случайными