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

MATLAB Discussion :

Comment rechercher un chiffre dans un nombre ?


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut Comment rechercher un chiffre dans un nombre ?
    Re

    Dans mon programme, j'offre le choix dans les figures.

    Ce choix peut être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    r = 1,2,3,4,12,13,...,123,...,1234
    Pour assurer une optimisation, je souhaiterais donc écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (dans r il y a un 1)
         bla bla bla
    elseif (dans r il y a un 2)
         bla bla bla
    ...
    end
    Merci beaucoup du gros coup de pousse
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    Comme l'arithmétique de ton ordinateur est binaire et non décimale, tu ne peux pas faire le test sur une valeur numérique; tu dois d'abord la convertir en chaîne de caractères, par exemble par la fonction num2str, puis décortiquer cette chaîne et tester séparément les caractères qui la constituent.

    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Merci beaucoup
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Une implémentation plus efficace peut être écrite à base de divisions et modulos par 10 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function Result = chiffrepresent(N, Chiffre)
    %CHIFFREPRESENT Teste si un chiffre est présent dans l'écriture décimale d'un nombre
     
    Result = 0;
    while N > 0
      if mod(N, 10) == chiffre
        Result = 1;
        break;
      end
     
      N = floor(N/10);
    end
    Ceci ne fonctionne qu'avec des arguments scalaires positifs.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Dans mon programme, j'offre le choix dans les figures.
    Comment l'utilisateur entre-t-il son choix ? INPUTDLG ? Cases à cocher ? ...
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    je lui dis ceci :

    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
    z = 1;
    while z == 1;
     
    disp('Quel figure voulez vous ?')
    disp('1 : figure 1');
    disp('2 : figure 2');
    disp('3 : figure 3');
    r = input ('');
    r = num2str(r)
     
    bla bla bla
     
    disp('Voulez vous recommencer ?')
    disp('1 : oui')
    disp('2 : non')
    z = input('')
     
    end
    Remarque : Dans le "bla bla bla", je complète ma chaine de caractère (r) à 4 caractères. Puis je fais des pour la "figure(1)" ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if r(1) == 2 || r(2) == 2
    pour la figure(2) , etc...

    C'est de la bricole, je l'admets...
    Vu que je gère une dizaine de figure possible, je pensais à créer une interface... Je suis en train de me renseigner dessus...
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer un chiffre dans une chaîne ?
    Par kenny49 dans le forum Langage
    Réponses: 1
    Dernier message: 16/08/2006, 14h52
  2. Réponses: 11
    Dernier message: 18/07/2006, 11h03
  3. Comment rechercher le symbol % dans un champ?
    Par nmathon dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2006, 17h01
  4. [FLASH] comment rechercher l'info dans un XML
    Par hatice83 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 14/12/2005, 11h57
  5. Comment rechercher une chaine dans plusieurs tables ?
    Par tsing dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/11/2005, 18h04

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