我有一个小问题。我编写了一个程序,要求用户输入包含 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 校验位的计算。
我有一个小问题。我编写了一个程序,要求用户输入包含 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 校验位的计算。
请改用循环。(我只显示总值和校验位计算 - 您需要先将用户输入输入到您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;