ので、私はハッシュ化していますし、これらのタイプ/機能を定義している:エイダ:整数オーバーフロー
subtype string2 is String(1..2);
function cString2 is new Ada.Unchecked_Conversion(string2, long_integer);
function cChar is new Ada.Unchecked_Conversion(character, long_integer);
と、このハッシュ関数を使用する必要があります。
HA = (((cString2(s1) + cString2(s2)) * 256) + cChar(char)) mod 128
(関数は、目的に悪いですが、私それを実装する必要があります)問題は、オーバーフローのために、2つのlong整数の合計で256を加算したり、または乗算しようとするときに発生します。私は何とかPOSITIVE整数値として文字列を扱う必要がありますまた、私の関数のオーバーフローがありません。感謝!!!
通常1が行うハッシュテーブルのサイズ素数:言葉のより少ない半分と最悪の場合には二つの異なるハッシュ値のための20回の衝突ごとに一意のハッシュを持つ結果を生成します。 – user3344003
宿題私はあなたに最適以下のハッシュ関数がついているので、私は仮定します。 –