.


:




:

































 

 

 

 


(Luhn Algorithm)




ValidateCard , , IBM 1960 . , . . , , . , , .

Web- http://en.wikipedia.org/wiki/Luhn_algorithm. "Reader's Digest".

1. , . 2 . , 1111 2121.

2. 9, . , 1166 2136. 6 ( 12) (1 2) ( 3).

3. . 2136, 2+1+3+6 ( 12).

4. 0 ( , 10), . .

, . , . , , ( , ).

 

ValidateCard. , ( ):

1 Function ValidateCard(CardNumber As String)

' ( )

2 Dim SumOfDigits

3 SumOfDigits = 0

' , ,

' .

' (1)

4 Dim OddNumbered

5 OddNumbered = True

2 , . .


6 Dim i

7 For i = Len(CardNumber) To 1 Step -1

8 Dim CurrentNumber

9 CurrentNumber = Mid(CardNumber, i, 1)

10 If OddNumbered = False Then

'

11 CurrentNumber = CurrentNumber * 2

12 If CurrentNumber >= 10 Then '

' , .

' ,

'

13 Dim NumText As String

14 NumText = CurrentNumber

15 CurrentNumber = Val(Left(NumText, 1)) +

16 Val(Right(NumText, 1))

17 End If

18 End If

'

19 " SumOfDigits = SumOfDigits + CurrentNumber


.

' True False

' False True

20 OddNumbered = Not OddNumbered

21 Next


' 10,

22 If SumOfDigits Mod 10 = 0 Then

23 ValidateCard = True

24 Else

25 ValidateCard = False

26 End If

27 End Function


.

1 . , . As String. , , .

23 , .

45 , , , , .

67 For/Next. , Step -1. , 1 ( 1 ). .

 

 

Len, . , 11 , 11 ( ).

 

89 , . Mid .

10 , , .

1117 , , . ( 11). , ( 1315).

19 . , . , .

20 ( ).

21 6 .

2226 . 10, . Mod, ( 10, , .)

, , , VB, , . , .

, ValidateCard, .


, , CardNumber:

Private Sub CardNumber_BeforeUpdate(Cancel As Integer)

If ValidateCard(CardNuraber) Then

MsgBox "Your card is valid," Else.

MsgBox "Your card is invalid. " & _

"Did you forget a number, or are you trying to cheat us?" Cancel = True

End If

End Sub

CardNumber, . 17.3.

 
 

. 17.3. Validate Card AddCreditCard ( ) Boutique Fudge. CardNumber, ,

 

 





:


: 2016-03-28; !; : 1059 |


:

:

, .
==> ...

1527 - | 1304 -


© 2015-2024 lektsii.org - -

: 0.013 .