×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。

モールス信号の変換(3進数展開で表現)

ホーム > 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.
			

作成日:2016年9月25日、最終更新日: