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 :

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 ;
}
L'ennui, c'est que, comme le sentiez venir, ce code ne semble pas fonctionnel.
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.