[renommé] algorithme de luhn vb.net

liver13 -  
yg_be Messages postés 24281 Statut Contributeur -
je traite un exercice sur la verification des carte bancaire en effet il faille que je passe par l'algorithme de luhn.
mon hic ! je le trouve seulement en php or moi je travail en visual basic puis je avoir la traduction du code source php en code source visual basic
merci pour votre sincere reponse
voici le code

<?php

 
 @param string $num
 
/

 function test_cb($num){
  if(strlen($num) == 16){ // 16 caractères
   // Séparation de tous les caractères
   $c = array();
   for($i=0; $i<16; $i++){
    if(is_numeric(substr($num,$i,1))){ // Uniquement des chiffres
     $c[$i] = substr($num,$i,1);
    }else{
     return false;
    }
   }
   // Contrôle
   $m1 = 0;
   for($i=0; $i<16; $i++){
    if(($i%2)==0){
     $x = $c[$i]*2;
     if($x>9){
      $m1 += $x-9;
     }else{
      $m1 += $x;
     }
    }else{
     $m1 += $c[$i];
    }
   }
   if(($m1%10)!=0){ // Doit être multiple de 10
    return false;
   }
   // Pas d'erreur
   return true;
  }else{
   return false;
  }
 }

S'il vous plait... Merci d'avance..!?

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

4 réponses

Utilisateur anonyme
 
Bonjour.

Merci de prendre en compte que tous les intervenants sont bénévoles.
Nous sommes là pour aider oui, mais faire le travail de recherche à ta place non.
Cet algorithme est décrit en français, puis un algorithme est proposé sur Wikipedia. (Entre autres).
C'est quand même un qui arrive en tête des recherches quelques soit le moteur utlisé.
Je te propose donc d'aller lire l'article, de tenter de traduire en VB.Net, et si tu n'y arrives pas de le poster ici, en utilisant la coloration syntaxique (voir la procédure ici), ce qui rend le code facile à lire (contrairement à celui que tu as posté) et donc augmentera tes chances qu'un bénévole s'intéresse à ton problème.

0
liver13
 
merci de me repondre et vraiment desoler pour votre premiere intervention
0
liver13
 
<?php


@param string $num

/

function test_cb($num){
if(strlen($num) == 16){ // 16 caractères
// Séparation de tous les caractères
$c = array();
for($i=0; $i<16; $i++){
if(is_numeric(substr($num,$i,1))){ // Uniquement des chiffres
$c[$i] = substr($num,$i,1);
}else{
return false;
}
}
// Contrôle
$m1 = 0;
for($i=0; $i<16; $i++){
if(($i%2)==0){
$x = $c[$i]*2;
if($x>9){
$m1 += $x-9;
}else{
$m1 += $x;
}
}else{
$m1 += $c[$i];
}
}
if(($m1%10)!=0){ // Doit être multiple de 10
return false;
}
// Pas d'erreur
return true;
}else{
return false;
}
}

                
0
yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 
voici un exemple trouvé sur internet:

Imports System.Linq
    Function ValidLuhn(value As String)
        Return value.Select(Function(c, i) (AscW(c) - 48) << ((value.Length - i - 1) And 1)).Sum(Function(n) If(n > 9, n - 9, n)) Mod 10 = 0
    End Function
0