Ocena użytkownikóww: ***** / 2
Nadesłany przez Tomasz Lubiński, 02 kwietnia 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Luhn - Delphi/Luhn.dpr:
//algorytm Luhn'a
//www.algorytm.org
//(c)2007 by Tomasz Lubinski
program Luhn;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
DoubleArray : array[0..9] of Byte = (0, 2, 4, 6, 8, 1, 3, 5, 7, 9);
//
// Check number - return check digit
//
function luhnCheckDigit(number: String): integer;
var
i: Integer;
sum: Integer;
len: Integer;
begin
len := Length(number);
sum := 0;
for i:=2 to len do
if (i mod 2) <> 0 then
sum := sum + StrToInt(number[len - i + 1])
else
sum := sum + DoubleArray[StrToInt(number[len - i + 1])];
sum := sum mod 10;
sum := 10 - sum;
sum := sum mod 10;
result := sum;
end;
//
// Check number - return true if check digit in number is correct, false otherwise
//
function luhnCheck(number: String): boolean;
var
i: Integer;
sum: Integer;
len: Integer;
begin
len := Length(number);
sum := 0;
result := false;
for i:=1 to len do
if (i mod 2) <> 0 then
sum := sum + StrToInt(number[len - i + 1])
else
sum := sum + DoubleArray[StrToInt(number[len - i + 1])];
if (sum mod 10) = 0 then
result := true;
end;
// Get number and check it
var
number : String;
begin
writeln('Podaj numer do sprawdzenia');
readln(number);
if (luhnCheck(number) = true) then
writeln('Numer jest prawidlowy')
else
writeln('Numer jest nieprawidlowy');
readln;
end.
i: Integer;
sum: Integer;
len: Integer;
w Paskalu robi się tak:
var i, sum, len : integer;
Autor bierze od wiersza?