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 :

Condition ET OU avec texte


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 103
    Par défaut Condition ET OU avec texte
    Bonjour,

    J’ai un souci avec la condition ET OU que j'utilise dans dans la condition if: Voici un exemple simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    namew='BonjourTom';
     
    if (namew(1:7)=='Bonjour')&(namew(8:10)=='Tom')
        a=1;
    else
        a=0; 
    end
    Et ça m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Operands to the || and && operators must be convertible to logical scalar values.
    J'ai essaye le double && et ça ne fonctionne pas non plus

    Quelqu'un aurait une idée ?

    Merciiii !!

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Pour comparer des chaines de caractères, utilises les fonctions strcmp, strcmpi, strncmp, strncmpi

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    namew = 'BonjourTom';
     
    if strcmp(namew(1:7), 'Bonjour') && strcmp(namew(8:10), 'Tom')
        a = 1;
    else
        a = 0; 
    end
    Ce qui revient aussi à écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    namew = 'BonjourTom';
     
    a = strcmp(namew(1:7), 'Bonjour') && strcmp(namew(8:10), 'Tom');

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 103
    Par défaut
    Bonjour Jérôme;

    Merci pour ta réponse, ça fonctionne .

    Ensuite ça n'a pas l'air de fonctionner pour une situation plus complexe. Je reprends l'exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    namew = 'BonjourTom';
     
    if (strcmp(namew(1:7), 'Bonjour') && strcmp(namew(8:10), 'Tom')) || (strcmp(namew(1:7), 'Bonjour') && strcmp(namew(8:10), 'Luc'))
        a = 1;
    else
        a = 0; 
    end
    Comment faire ?

    Merci !

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    L'exemple fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (strcmp(namew(1:7), 'Bonjour') && strcmp(namew(8:10), 'Tom')) || (strcmp(namew(1:7), 'Bonjour') && strcmp(namew(8:10), 'Luc'))
    Devient :

    Donc

    Au final :

    Donc a = 1

    Non ?

    Cela revient à écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if strcmp(namew(1:7), 'Bonjour') && (strcmp(namew(8:10), 'Tom') || strcmp(namew(8:10), 'Luc'))

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 103
    Par défaut
    C'est vrai que ça devrait fonctionner...

    Dans le cas ou c'est:

    Logiquement ça devrait donner 0 donc le if s’arrête.

    Mais au lieu de cela, ça affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Operands to the || and && operators must be convertible to logical scalar values.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par ThonySp Voir le message
    Dans ce cas, le code renvoi bien a = 0 sur ma machine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> namew = 'AurevoiPam'
     
    namew =
     
    AurevoiPam
     
    >> a = strcmp(namew(1:7), 'Bonjour') && (strcmp(namew(8:10), 'Tom') || strcmp(namew(8:10), 'Luc'))
     
    a =
     
         0
    Montre nous le code que tu essaies d'exécuter.

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 103
    Par défaut
    Je pense avoir trouvé... Mais je trouve un peu louche.

    En fait dans mon code, y avait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcmp(namew(1:7), 'Bonjour')&& (strcmp(namew(8:10), 'Tom') || strcmp(namew(8:10), 'Luc'))
    Le && était collé a la première condition et j'ai mis un espace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcmp(namew(1:7), 'Bonjour') && (strcmp(namew(8:10), 'Tom') || strcmp(namew(8:10), 'Luc'))
    Ça a l'air de fonctionner...

    Je vais vérifier cela sur un nombre plus important d'échantillons

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par ThonySp Voir le message
    Le && était collé a la première condition et j'ai mis un espace :
    Le problème ne vient pas de là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> namew = 'AurevoiPam';
    >> a = strcmp(namew(1:7),'Bonjour')&&(strcmp(namew(8:10),'Tom')||strcmp(namew(8:10),'Luc'))
     
    a =
     
         0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> namew = 'BonjourTom';
    >> a = strcmp(namew(1:7),'Bonjour')&&(strcmp(namew(8:10),'Tom')||strcmp(namew(8:10),'Luc'))
     
    a =
     
         1

Discussions similaires

  1. Modification curseur avec texte entré dans 1 textfield
    Par taillooo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/02/2006, 14h14
  2. alert avec text en arab
    Par le_prince dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/01/2006, 13h23
  3. Afficher un cadre(avec texte) à coté de la souris
    Par frechy dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/01/2006, 11h05
  4. [XML + XSL] petite confusion avec text()
    Par DidRocks dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 12/07/2005, 09h08
  5. Image avec texte à droite puis en dessous
    Par StarNab dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/05/2005, 17h25

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