По каналу связи передаются сообщения, содержащие только шесть букв: А, Б, В, Г, Д, Е; для передачи используется двоичный код, удовлетворяющий условию Фано. Для букв А, Б, В, Г, Д используются такие кодовые слова: А – 111; Б – 011; В – 10; Г – 001; Д – 000. Укажите кратчайшее кодовое слово для буквы Е, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением. Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.
должно по идее получиться "нет худо без добра.", но у меня получилось
"нет худо бrз одра." может ты в условии что-то напутала? вот программа которая переводит
function Pow(a, x:integer):integer;
var
rez, i:integer;
begin
rez := 1;
for i := 1 to x do
rez := rez * a;
Pow := rez;
end;
function BinToDec(a:string):integer;
var
i ,r:integer;
begin
r := 0;
for i := length(a) downto 1 do
r := r + StrToInt(a[i]) * Pow(2, length(a) - i);
BinToDec := r;
end;
var
s:array[1..100] of string;
i:integer;
begin
s[1] := '11001101';
s[2] := '11100101';
s[3] := '11110010';
s[4] := '00100000';
s[5] := '11110101';
s[6] := '11110011';
s[7] := '11100100';
s[8] := '11100000';
s[9] := '00100000';
s[10] := '11100001';
s[11] := '1110010';
s[12] := '11100111';
s[13] := '00100000';
s[14] := '11101110';
s[15] := '11100001';
s[16] := '11110000';
s[17] := '11100000';
s[18] := '00101110';
for i := 1 to 18 do
write(chr(BinToDec(s[i])));
end.
#include <iostream>
using namespace std;
int main()
{
int a[12] = {}, b = 100;
for(int i = 0; i < 12; i++) {
cout << "Input a[" << i << "]: ";
cin >> a[i];
if ((a[i] % 2 == 1) && (a[i] > 0) && (9 < a[i]) && (a[i] < 100) && (a[i] < b))
b = a[i];
}
if (b == 100) {
cout << "Numbers do not satisfy the condition";
return 1;
}
else cout << "The given number is " << b;
return 0;
}
//Так как Tab'ы временно не сохраняются в редакторе, прилагаю .cpp файл. Язык С++