algorytm.org

Implementacja w Delphi/Pascal



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Algorytm Luhn'a (mod 10) - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 2
SłabyŚwietny
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.

Komentarze
photo
-1 # Romek 2011-08-01 14:07
var
i: Integer;
sum: Integer;
len: Integer;

w Paskalu robi się tak:
var i, sum, len : integer;

Autor bierze od wiersza?
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz