0

少し問題があります。11桁のコードをユーザーに要求するプログラムを作成しました。文字列として定義しましたが、このコードのすべての桁を個別に使用して方程式を作成したいと思います。

たとえば、コードが37605030299方程式を実行する必要がある場合:

(1*3 + 2*7 + 3*6 + 4*0 + 5*5 + 6*0 + 7*3 + 8*0 + 9*2 + 1*9) / 11

MODとは何かを調べます。

これは、ISBNチェックディジットの計算です。

4

1 に答える 1

2

代わりにループを使用してください。(合計値とチェック ディジットの計算のみを表示しています。最初に、自分自身という名前の変数にユーザー入力を取得する必要がありUserISBNます。)

function AddCheckDigit(const UserISBN: string): string;    
var
  i, Sum: Integer;
  CheckDigit: Integer;
  LastCharValue: string;
begin
  Assert(Length(UserISBN) = 10, 'Invalid ISBN number.');
  Sum := 0;
  for i := 1 to 10 do
    Sum := Sum + (Ord(UserISBN[i]) * i);

  { Calculate the check digit }
  CheckDigit := 11 - (Sum mod 11);

  { Determine check digit character value }
  if CheckDigit = 10 then
    LastCharValue := 'X'
  else
    LastCharValue := IntToStr(CheckDigit);

  { Add to string for full ISBN Number }
  Result := UserISBN + LastCharValue;
end;
于 2013-03-23T01:16:15.410 に答える