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

C++Builder Discussion :

probleme de Comparaison 2 chiffre


Sujet :

C++Builder

  1. #1
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut probleme de Comparaison 2 chiffre
    saluuuuuuuuuuut
    j'ai un probleme quand je compare un chiffre existe dans une case de StringGrid et l'autre dans un ComboBox par exemple quand je tombe dans 2 et 11 me met que 2 et superieur que 11 .comment je résoudre ce probleme SVP.MERCI d'avance

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    C'est simplement que ton test n'est pas bon...

    Poste ici le code de ton test pour qu'on puisse t'aider...

  3. #3
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    C'est parce que tu compare des chaine de caractère, il faut les convertir en int avant de les comparer

  4. #4
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    Citation Envoyé par pottiez Voir le message
    C'est parce que tu compare des chaine de caractère, il faut les convertir en int avant de les comparer
    la fonction est StrToInt(...);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      AnsiString asString = "456";
      int iVal;
     
        iVal = StrToInt(asString);
    Baxter

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 76
    Points : 59
    Points
    59
    Par défaut
    Petite précision pour StrToInt() ou StrToFloat(), la conversion des chiffre a virguel est defois aléatoire. StrToDouble() fonctionne mieu. pourquoi ... je sais pas vraiment.

  6. #6
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    salut .merci
    j'ai utilisé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int e,f;
     String chaine1,chaine2;
    {chaine1= Form2->ComboBox2->Text;
    chaine2= Form4->StringGrid5->Cells[2][i];
    e=StrToInt(chaine1);
    f= StrToInt(chaine2);
     
    {if(e > f)
    {Form3->Visible=true;
    } }}
    mon probleme maintenant que la form4->StringGrid5->Cells[2][i] contient des donné sous forme d'intervalle exemple [2,8]et je veut tester si la valeur de
    Form2->ComboBox2->Text elle n'est pas entre [2,8] la form3 s'affiche
    merci d'avance pour votre aide

  7. #7
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut
    D'un cas général,pour tester si x est dans l'intervalle [a,b],on peut effectuer le test suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ((x>=a) && (x<=b)) //  && représente le ET logique
    {
    }

  8. #8
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    merci beaucoup pour votre aide!!

  9. #9
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    Bojour tout le mode
    j'ai un autre probleme j'ai utilisé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {String chaine1,chaine;char M1,M2;int a,b,e;
      {chaine1= Form4->ComboBox1->Text;
    e=StrToInt(chaine1);
    chaine= Form4->StringGrid6->Cells[2][1];
     
    M1=chaine[2];
    a=StrToInt(M1);
     
    M2= chaine[4];
    b=StrToInt(M2);
    {if(e >= a&& e<= b)
    {Form6->Visible=true;} else {Form3->Visible=true;}
    }
    ca marché mais dans par exemple j'ai [10,15] ça marche pas
    merci d'avance pour votre aide

  10. #10
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    L'erreur vient des deux ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    M1=chaine[2];
    M2= chaine[4];
    car tu ne récupère qu'un seul caractère et donc ca ne fonctionne qu'avec des nombres à 1 chiffre.
    Pour le faire correctement il faut que tu utilise SubString et Pos :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    M1=chaine.SubString(chaine.Pos("[")+1,chaine.Pos(",")-1);
     M2= chaine.SubString(chaine.Pos(",")+1,chaine.Pos("]")-1);
    (Le code est fait de tête et peut comporter des erreurs)

  11. #11
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    ça marche pas!!!!!!!!
    j'ai remarqué que ce code il prend aussi la vergule et le crochet.
    merci d'avance pour votre aide.

  12. #12
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Effectivement et pour deux raisons, tout d'abord, M1 et M2 sont déclaré en char alors qu'il faudrait les déclarer en String et ensuite mon code n'est pas tout a fait bon, il faut utiliser celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    M1=chaine.SubString(chaine.Pos("[")+1,(chaine.Pos(",")-chaine.Pos("["))-1);
    M2= chaine.SubString(chaine.Pos(",")+1,(chaine.Pos("]")-chaine.Pos(","))-1);

  13. #13
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiii beaucoup pottier ca marche bien

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

Discussions similaires

  1. Probleme avec alignement de chiffres réels :(
    Par softstar dans le forum Delphi
    Réponses: 52
    Dernier message: 09/09/2006, 01h12
  2. probleme de comparaison de date
    Par witjet dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/07/2006, 12h39
  3. Problème de comparaison de fichiers
    Par peppena dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 30/05/2006, 20h41
  4. [VBS]probleme ds comparaison de nombres
    Par zorba49 dans le forum VBScript
    Réponses: 9
    Dernier message: 24/05/2006, 17h43
  5. [Dates] Probleme de comparaison de date
    Par mathieu77186 dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2005, 18h21

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