Code : Tout sélectionner
; Verification de la carte bancaire : algorothme de Luhn
OpenConsole()
ok=#True
Print("Type carte , [1] = Visa , [2] = Mastercard =>")
Type = Val(Input())
PrintN("")
Print("Numero de la carte =>")
NumeroCarte.s=Input()
; test mastercard
If Type=2
; test de longueur
If Len(NumeroCarte)<>16
PrintN("Votre numero de carte n'est pas valable")
ok=#False
EndIf
; test le préfixe
If ok=#True
prefix=Val(Mid(NumeroCarte,1,2))
If prefix<>51 And prefix<>52 And prefix<>53 And prefix<>54 And prefix<>55
PrintN("Votre numero de carte n'est pas valable")
ok=#False
EndIf
EndIf
EndIf ; fin test master card
; test visa
If Type=1
; test la longueur
If Len(NumeroCarte)>16 Or Len(NumeroCarte)<13
PrintN("Votre numero de carte n'est pas valable")
ok=#False
EndIf
; test le préfixe
If ok=#True
prefix=Val(Mid(NumeroCarte,1,1))
If prefix<>4
PrintN("Votre numero de carte n'est pas valable")
ok=#False
EndIf
EndIf
EndIf ; fin test visa
;Algorithme de Luhn
If Val(NumeroCarte) ; si c'est bien un numéro
If ok=#True ; si les tests précédents ont été effectués avec succès
;debut de l'algo
totalcarte=0
increment=0
For i=Len(NumeroCarte) To -1
numero=Int(Mid(NumeroCarte,i,1))
increment+1
If increment % 2 <> 0 ; nombre impaire
totalcarte + numero ; ajout normal dans la somme
Else ; nombre impaire
numero=numero*2
If numero>=10
totalcarte=totalcarte+1+numero-10
Else
totalcarte=totalcarte+numero
EndIf
EndIf
Next
; division du total
If totalcarte % 10 <>0
PrintN("Votre numero de carte n'est pas valable")
ok=#False
EndIf
EndIf
Else
PrintN("Votre numero de carte n'est pas valable")
ok=#False
EndIf
; Fin de vérification carte bancaire si ok=true à ce niveau la carte est ok
If ok
PrintN("Votre numero de carte est valable")
EndIf
Input()
CloseConsole()