Verrification de code EAN8/13 en D

March 6, 2008

Voici une fonction écrite en D qui dit si oui ou non la chaine soumise en entrée est un code EAN correct : on verrifie le nombre de caractères, que tout les caractères sont bien des chiffres, et on regarde que la checksumm est bien la bonne.

bool eanCheck(string ean) {
	int summ = 0;

	if(ean.length != 13 && ean.length !=8) return false;

	int n = ean.length - 1;
	for(int i=0; i<n; i+=2) {
		if (ean[i] < 48 || ean[i] > 57) return false;
		summ += ean[i] - 48;
	}
	for(int i=1; i<n; i+=2) {
		if (ean[i] < 48 || ean[i] > 57) return false;
		summ += 3 * (ean[i] - 48);
	}

	summ = 10 - (summ % 10);

	if (summ == ean[n] - 48) return true;
	else return false;
}

Note: pour fonctionner, ce programme requiet une entrée dans un charset compatible ASCII (iso-8859-* ou utf-8 par exemple)

Filed under: D,Programmation

Leave a Comment

, (Hidden)

*

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

RSS feed for comments on this post.


Calendar

February 2012
M T W T F S S
« Oct    
 12345
6789101112
13141516171819
20212223242526
272829  

Recent Posts