改爲使用循環。 (我只顯示總價值和校驗位計算 - 您需要首先獲取用戶輸入到自己名爲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;
這是一個ISBN? – sberry 2013-03-22 23:54:30
我認爲它不是 – BeginnerPascal 2013-03-22 23:58:49
你不能乘以字符串(當N1是字符串或字符時爲'N1 * 1'),也不能對字符串進行模(mod)操作。你的問題完全不清楚,因爲你所要做的事情甚至都不可能。你必須轉換爲某種編號才能乘以或修改它。另外,你的問題可以簡化爲「如果N11 =(某事),那麼Do This else DoThat」 - 根本不需要第二個「(N1 * 1 + N2 * 2 ...)」。你需要[編輯]你的問題,並明確你想要做什麼 - 你問的問題是不可能的。這是一個CheckDigit嗎? – 2013-03-23 00:02:41