Дано:
i=5(бит)
Найти: min и max мощность алфавита.
Решение:
i=Log₂N ,где N - кол-во символов
N=2⁵=32 символа - это максимальное значение мощности , так как для кодировки 33 символов нужно 2⁶ бит для символов [33;64].
По такому же принципу ищем минимальное значение, т.е. 2⁴=16 => min значение равно 2⁴+1=16+1=17 [17;32]
Вообще нужно понимать множество чисел ,которое можно кодировать 5 битами оно принадлежит [0;32] , но так как объём точно равен 5 битам, то работаем по подмножеству[17;32]
Ответ: 17;32.
Const
ru : array[1..33] of Char = ('а','б','в','г','д','е','ё','ж','з','и',
'й','к','л','м','н','о','п','р','с','т',
'у','ф','х','ц','ч','ш','щ','ъ','ы','ь',
'э','ю','я');
en : array[0..33] of String = (' ','a','b','v','g','d','e','ye','zh','z','i',
'y','c','l','m','n','o','p','r','s','t',
'u','f','h','c','ch','sh','sch','`','ы','',
'ea','yu','ja');
{ транскрипцию записал не заглядывая ни в какие справочники - можете кидаться тапками }
Function GetIndex(ss : Char) : Byte;
Var ii : Byte;
Begin
ii:=1;
While (ii<=33) and (LowerCase(ss)<>ru[ii]) do Inc(ii);
If ii in [1..33] then GetIndex:=ii else GetIndex:=0;
end;
Function Trans(S : String) : String;
Begin
If Length(S)>0 then Trans:=en[GetIndex(S[1])]+Trans(Copy(S,2,Length(S)-1))
else Trans:='';
end;
Begin
Writeln(Trans('паскаль'));
Writeln(Trans('ява'));
end.
<span>Цикл с предусловием </span>
<span><span>Цикл с постусловием</span></span>
<span><span><span>Цикл со счётчиком</span></span></span>
<span>Пронумеруем для наглядности: </span>
<span>1, 2, 3, 4 </span>
<span>Итак: </span>
<span>1) Сравниваем первую пару, например 1 и 2 </span>
<span>2) Сравниваем вторую пару — 3 и 4 </span>
<span>3) Сравниваем победителей первых двух пунктов между собой. Победитель будет самым тяжёлым </span>
<span>4) Сравниваем проигравших первых двух пунктов между собой. Проигравший будет самым лёгким </span>
<span>5) Теперь сравниваем те 2 арбуза, которые остались посерединке.</span>