[renommé] algorithme de luhn vb.net

Fermé
liver13 - Modifié le 10 sept. 2017 à 09:16
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 10 sept. 2017 à 13:47
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

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
10 sept. 2017 à 09:12
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
merci de me repondre et vraiment desoler pour votre premiere intervention
0
<?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 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
10 sept. 2017 à 13:47
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