我有一个任务,我要求用户输入11位代码(字符串)。在
(一) 例如,假设用户输入代码是37605030299。在
(二) 然后我需要检查最后一个数字是否匹配。最后一个号码是这样得到的: nr11=(nr1*1+nr2*2+nr3*3+nr4*4+nr5*5+nr6*6+nr7*7+nr8*8+nr9*9+nr10*1)11型
(三) 我写的是:
var C, nr1, nr2, nr3, nr4, nr5, nr6, nr7, nr8, nr9, nr10, nr11: string;
begin
nr1:=(copy(C, 1, 1));
nr2:=(copy(C, 2, 1));
nr3:=(copy(C, 3, 1));
nr4:=(copy(C, 4, 1));
nr5:=(copy(C, 5, 1));
nr6:=(copy(C, 6, 1));
nr7:=(copy(C, 7, 1));
nr8:=(copy(C, 8, 1));
nr9:=(copy(C, 9, 1));
nr10:=(copy(C, 10, 1));
nr11:=(copy(C, 11, 1));
writeln('Enter the code which contains 11 digits:');
readln(C);
if nr11 = (nr1*1 + nr2*2 + nr3*3 + nr4*4 + nr5*5 + nr6*6 + nr7*7 + nr8*8 + nr9*9 + nr10*1) mod 11 then
begin
writeln('The code is correct!');
end
else
if nr11 <> (nr1*1 + nr2*2 + nr3*3 + nr4*4 + nr5*5 + nr6*6 + nr7*7 + nr8*8 + nr9*9 + nr10*1) mod 11
begin
writeln('The code is incorrect!');
end;
readln();
end.
这不起作用,因为我知道你不能像我一样在方程中使用字符串,但是它能工作吗?我只是在学帕斯卡,如果这看起来太蠢了,对不起。在
此UI代码应该是正确的。正在检查:
1*3+2*7+3*6+4*0+5*5+6*0+7*3+8*0+9*2+1*9=108
108年11月至9月8日
9*11=99
108-99=9(答案是9,所以最后一位必须是9,最后一位是9,表示代码是正确的)
如果我在python的例子中发现了一个错误,那么我应该怎么做:
^{pr2}$
第一件事是当C为空时从C复制内容。在尝试访问其元素之前,应放置readln(C):
第二点是,如果值只有1个字符,则可以通过索引访问它:
^{pr2}$要将字符串转换为整数,必须包含sysutils才能使用strpoint函数:http://www.freepascal.org/docs-html/rtl/sysutils/strtoint.html
另一种方法(逐字符)是计算char值与48(即“0”的ASCII代码)之间的差
样本代码:
看起来像ISBN。为了计算校验位,我建议如下。在
这会将范围从“0”到“9”的单个字符转换为相应的整数值。在
^{pr2}$这将计算11位代码的校验位。在
要将实际校验位与计算出的校验位进行比较,您可以写下:
相关问题 更多 >
编程相关推荐