IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Petit problème de logique


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut Petit problème de logique
    Bonjour,

    Voilà je dois essayer de récupérer une lettre a partir d'un calcul je sais que la lettre est bonne mais impossible de l'afficher

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
      $CP = '6605129N';
        $LETTRE = array('A','B','C','D','E','F','G',
    			'H','I','J','K','L','M','N',
    			'O','P','Q','R','S','T','U',
    			'V','W','X','Y','Z');
     
    	$let = array();
    	$let = NULL;
    	for($i = 0; $i<=25; $i++){
     
    		echo $let[] = $LETTRE[$i];
     
    	}echo "<br>";
     
    $nb_lettre = strlen($CP);
    if( $nb_lettre == 8)
    {
     
    	 $num= substr($CP,0,7)."<br>";
    	 $l = substr($CP,7,8)."<br>";
    }
    if($nb_lettre == 9)
    {
    $num= substr($CP,1,7);
    $l = substr($CP,8,9);
    }
     
     $modulo = ($num % 23)."<br>";
     
    echo $k = $num - $modulo."<br>";
    echo "m".$m = (int)($num / 23)."<br>";
    echo "j".$j = ($num -($m * 23) + 1)."<br>";
     
    if($LETTRE[$j] == $l){
    	$correct = 1;
    	}
    else{
    		$correct = 0;
    	}
    vu le calcul me donne la bonne lettre du tableau impossible de faire un echo de $LETTRE[$j]

    Merci d'avance du coup de main

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Rien compris

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    L'utilisateur doit saisir un numéro qui lui est spécifique, en l'occurrence $CP
    Ce numéro contient 7 chiffre et une lettre.
    Par des calculs sur les 7 chiffres (modulo et quotient)
    le résultat, sur cet exemple, est 13 je demande de vérifier si la lettre saisie par l'utilisateur est égale au calcul que je fais sur les chiffres.

    C'est mieux ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ton problème vient du faire que tu ajoutes des "<br>" à tes variables.
    Ainsi $j ne vaut pas 13 mais 13<br>

    Il faut ecrire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $j = $num - ($m * 23) + 1;
    echo "j". $j ."<br>";
    Sinon une petite astuce d'écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $LETTRE = range('A','Z');
    Et attention : 25 caractères ca va de 0 à 24.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Quelle lettre saisie par l'utilisateur tu n'en parles pas avant ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    Citation Envoyé par blueice Voir le message
    Quelle lettre saisie par l'utilisateur tu n'en parles pas avant ?
    Celui qui est dans mon code

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bon si je comprends bien, tu as un algo qui détermine un nombre, ce nombre correspondant à une lettre placée dans un tableau.

    Comme dit Sabotage, les index d'un tableau démarrent à 0, il faut donc probablement que tu retires 1 à ton résultat (genre E est la 5e lettre, donc à l'indice 4)

    Par contre, tu sais qu'avec un modulo 23 tu n'aura jamais les 3 dernières de l'alphabet ?

    Et je ne suis pas sûre que faire des affectations dans des echos soit une bonne idée...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    J'ai rien compris au calcul, mais j'ai nettoyé un peu le code.
    A voir si ça peut aider...

    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
    <?php
     
    $CP = '6605129N';
     
    $LETTRE = array('A','B','C','D','E','F','G',
            'H','I','J','K','L','M','N',
            'O','P','Q','R','S','T','U',
            'V','W','X','Y','Z');
     
    $nb_lettre = strlen($CP);
     
    if( $nb_lettre == 8) {
         $num = substr($CP,0,7);
         $l   = substr($CP,7,8);
    }
     
    if($nb_lettre == 9) {
        $num = substr($CP,1,7);
        $l   = substr($CP,8,9);
    }
     
    $modulo = ($num % 23);
     
    $k = $num - $modulo;
    $m = intval($num / 23);
    $j = $num - ($m * 23) + 1;
     
    echo $LETTRE[$j] == $l ? $LETTRE[$j] : "ko";

Discussions similaires

  1. Modélisation d'un petit problème logique avec Prolog
    Par blackmisery dans le forum Prolog
    Réponses: 36
    Dernier message: 01/10/2012, 19h03
  2. Petit problème de logique à résoudre
    Par Ggamer dans le forum Général Python
    Réponses: 9
    Dernier message: 07/01/2010, 10h20
  3. Petit problème de logique...
    Par insomniak dans le forum C++
    Réponses: 15
    Dernier message: 31/10/2005, 21h13
  4. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 13h00
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo