-4

次のアルゴリズムを使用して、UPC コードのチェックサムを取得しようとしています。

  • 右から左に作業し、奇数の位置 (1 番目、3 番目、5 番目など) の数字を合計します。
  • 合計に 3 を掛けます
  • 偶数桁 (2 番目、4 番目、6 番目など) の数字を合計します。
  • (1)と(2)の結果を足し合わせて、
  • その合計以上の最も近い 10 の倍数から合計を引く

結果はチェックデジットになるはずです。

これが私のコードです:

int[] a = {1, 2, 3, 4, 5}
checksum = 0;
int i = 0;

while ( a[i] < a.length-1  )
{
  checksum += a[i] + a[i - 1] ;
  i++;
}
checksum = ;

何か案は?

4

1 に答える 1

0

配列のすべてのエントリを合計したいだけの場合は、これを行うことができます(テストされていません):

var sum = 0;
var vars = [1, 2, 3, 4, 5];

vars.forEach(function (callback) {
    sum = sum + callback;
})

alert(sum);

これは実際のチェックサムではありません。5、2、3、1、4 もある可能性があります。

SO に関する同様の質問もご覧ください。ファイルの md5 チェックサムを取得する方法についてです。文字列にも使用できます。

あなたの質問がそうではないので、私はこれ以上具体的に答えることができません。

編集

最後の行を正しく理解していれば、これは機能するはずです(テストされていません):

var vars = [1, 2, 3, 4, 5];
var sum135;
var sum246;
var i = 0;

while (i < vars.length) {
    sum135 = sum135 + vars[i];
    sum246 = sum246 + vars[i + 1];
    i = i + 2;
}

sum135 = sum135 * 3;
var checksum = (sum135 + sum246) * (sum135 + sum246 + 10) - (sum135 + sum246);
于 2013-10-05T16:48:36.533 に答える