HOME
>
Programing
>
Pascal
>
英数字をモールス信号に変換して3進数表現する
注意
-
このサイトの利用によって生じた損害については当方では責任を負いかねますのでご了承ください。
仕様
-
数字の1は「トン」を表します。
-
数字の2は「ツー」を表します。
コード
program MorseCoding(input, output);
type MorseCode = array [1 .. 128] of integer;
{モールス符号への変換表の作成(3進数)}
procedure InitMorseCode(var m : MorseCode);
var i : integer;
begin
for i := 1 to 128 do
m[i] := 0;
{Definition}
{0 <-> none}
{1 <-> .}
{2 <-> -}
{0 .. 9}
m[48] := 242;
m[49] := 161;
m[50] := 134;
m[51] := 125;
m[52] := 122;
m[53] := 121;
m[54] := 202;
m[55] := 229;
m[56] := 238;
m[57] := 241;
{A .. Z}
m[65] := 5;
m[66] := 67;
m[67] := 70;
m[68] := 22;
m[69] := 1;
m[70] := 43;
m[71] := 25;
m[72] := 40;
m[73] := 4;
m[74] := 53;
m[75] := 23;
m[76] := 49;
m[77] := 8;
m[78] := 7;
m[79] := 26;
m[80] := 52;
m[81] := 77;
m[82] := 16;
m[83] := 13;
m[84] := 2;
m[85] := 14;
m[86] := 41;
m[87] := 17;
m[88] := 68;
m[89] := 71;
m[90] := 76;
{a .. z}
m[97] := 5;
m[98] := 67;
m[99] := 70;
m[100] := 22;
m[101] := 1;
m[102] := 43;
m[103] := 25;
m[104] := 40;
m[105] := 4;
m[106] := 53;
m[107] := 23;
m[108] := 49;
m[109] := 8;
m[110] := 7;
m[111] := 26;
m[112] := 52;
m[113] := 77;
m[114] := 16;
m[115] := 13;
m[116] := 2;
m[117] := 14;
m[118] := 41;
m[119] := 17;
m[120] := 68;
m[121] := 71;
m[122] := 76
end;
{0以外の数を出力する}
procedure PrintNonZero(x : integer);
begin
if (x mod 3) <> 0 then
write(x mod 3)
end;
{10進数を3進数展開して出力}
procedure TransDig(x : integer);
begin
if x < 3 then
PrintNonZero(x)
else
begin
TransDig(x div 3);
PrintNonZero(x mod 3)
end
end;
procedure main;
var c : char;
m : MorseCode;
begin
InitMorseCode(m);
while not eof do
begin
while not eoln do
begin
read(c);
TransDig(m[ord(c)])
end;
readln;
writeln
end;
readln
end;
begin
main
end.