var k1,k2,k3,k4,k:integer;
begin
writeln('Перед вами программа, которая умеет вычислять количество информации');
writeln('по выбранному наугад шарику из мешка.');
writeln('Введите число шаров белого цвета:');
readln(k1);
writeln('Введите число шаров чёрного цвета:');
readln(k2);
writeln('Введите число шаров синего цвета:');
readln(k3);
writeln('Введите число шаров красного цвета:');
readln(k4);
k:=k1+k2+k3+k4;
if k1<>0 then
writeln('Во фразе «Выпал белый шар» содержится ',log2(k/k1):4:1,' бит(а) информации');
if k2<>0 then
writeln('Во фразе «Выпал чёрный шар» содержится ',log2(k/k2):4:1,' бит(а) информации');
if k3<>0 then
writeln('Во фразе «Выпал синий шар» содержится ',log2(k/k3):4:1,' бит(а) информации');
if k4<>0 then
writeln('Во фразе «Выпал красный шар» содержится ',log2(k/k4):4:1,' бит(а) информации');
end.
Пример:
Перед вами программа, которая умеет вычислять количество информации
по выбранному наугад шарику из мешка.
Введите число шаров белого цвета:
100
Введите число шаров чёрного цвета:
0
Введите число шаров синего цвета:
200
Введите число шаров красного цвета:
100
Во фразе «Выпал белый шар» содержится 2.0 бит(а) информации
Во фразе «Выпал синий шар» содержится 1.0 бит(а) информации
Во фразе «Выпал красный шар» содержится 2.0 бит(а) информации
s = 0
k = 0: x = -10+3*0 = -10; x>0 - нет
k = 1: x = -10+3*1 = -7; x>0 - нет
k = 2: x = -10+3*2 = -4; x>0 - нет
k = 3: x = -10+3*3 = -1; x>0 - нет
k = 4: x = -10+3*4 = 2; x>0 - да; s = 0+2 = 2
k = 5: x = -10+3*5 = 5; x>0 - да; s = 2+5 = 7
k = 6: x = -10+3*6 = 8; x>0 - да; s = 7+8 = 15
k = 7: x = -10+3*7 = 11; x>0 - да; s = 15+11 = 26
k = 8: x = -10+3*8 = 14; x>0 - да; s = 26+14 = 40
k = 9: x = -10+3*9 = 17; x>0 - да; s = 40+17 = 57
k = 10: x = -10+3*10 = 20; x>0 - да; s = 57+20 = 77
На экран будут выводиться значения: -10 -7 -4 -1 2 5 8 11 14 17 20
После 20 выведется значение s = 77. Т.е подряд, без пробелов, будут выведены числа 20 и 77.
Значение s = 77.