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