ユーザーに11桁のコード(文字列)を入力するように求めるこのタスクがあります。
1) たとえば、ユーザー入力コードが 37605030299 であるとします。
2) 次に、最後の数字が一致するかどうかを確認する必要があります。これは、最後の番号を取得する方法です: nr11 = (nr1*1 + nr2*2 + nr3*3 + nr4*4 + nr5*5 + nr6*6 + nr7*7 + nr8*8 + nr9*9 + nr10* 1) mod 11
3)これは私が書いたものです:
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 で正しいはずの例を 1 つ見つけました。
def checkIDCode(code):
if len(code) != 11 or not code.isdigit():
return False
c = map(int,code)
w1 = [1,2,3,4,5,6,7,8,9,1]
w2 = [3,4,5,6,7,8,9,1,2,3]
s1 = sum(map(lambda x,y: x*y, c[:-1], w1))%11
s2 = (sum(map(lambda x,y: x*y, c[:-1], w2))%11)%10
return s1 == c[-1] or s1 == 10 and s2 == c[-1]