Bonjour à tous.
L'algorithme de Luhn permet de tester la validité d'un code chiffré, en utilisant une méthode de vérification de somme (checksum). Il est utilisé par exemple pour certifier les codes de carte de crédit.
Mon but est d'implémenter cet algo en langage C++ ; en m'aidant des docs de la toile (notament Wikipedia), j'ai écrit le code suivant :
L'ennui, c'est que, comme le sentiez venir, ce code ne semble pas fonctionnel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 int checkLuhn (char* code) { int length, digit, sum, i ; length = strlen(code) - 1 ; // on parcourt tous les chiffres de droite à gauche.. for (i = length ; i >= 0 ; i--) { digit = code[i] ; // si le rang <i> est pair (<i> XOR 1).. if (i ^ 1) { // on double le chiffre placé au rang <i>.. digit *= 2 ; // et si le chiffre est alors supérieur à 9, on fait la somme des chiffres (ex: 14 = 1+4 = 5).. if (digit > 9) digit -= 9 ; } // on accumule enfin chaque chiffre "modifié" sum += digit ; } // si le résultat final est divisible par 10, retourne 1, sinon 0 return sum % 10 < 1 ; }
Lorsque, par exemple, je teste cette fonction avec le nombre 8763 (code qui devrait être validé par l'algo), j'ai un code de retour nul (en clair le code n'est pas validé).
Je ne comprend pas d'où viens l'erreur ; algo mal transcrit, erreur de syntaxe [...] ?
Je sollicite donc votre aide.
Merci d'avance.
Partager