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++ Discussion :

Mauvais résultat après calcul de 2 nombres


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut Mauvais résultat après calcul de 2 nombres
    Bonsoir tout le monde,

    J'ai un petit problème dans le code ci dessous.
    C'est un petit test de calcul que j'essaye de faire fonctionner pour le moment je le teste qu'avec trois chiffres et 2 opérations.

    Donc le premier calcul fonctionne correctement mais là où ça se corse c'est après le égal.

    exemple : 1+1 = 2 là ça marche

    mais quand je fais 1+1 = 2 +1... là ça me met des mauvais résultats !

    En fait un (+) ou un (-) après le résultat ça me donne un résultat bizarre.

    char AffichageEdit[25]; ----------->affichage dans l'Edit1
    int Operation=0;-----------------> indicateur de l’opération
    char EffaceChaine[25];-----------> remet l'Edit1 à vide apres un clic sur le +
    int Memoir1;---------------------> mémorise le 1er affichage
    int Memoir2;---------------------> mémorise le 2eme affichage
    int Resultat;---------------------> Résultat
    int ResMemoir;



    Vous auriez une idée svp?


    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
     
    char AffichageEdit[25];
    int  Operation=0;
    char EffaceChaine[25];
    int  Memoir1;
    int  Memoir2;
    int  Resultat;
    int  ResMemoir;
     
     
     
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
    {
     StrCat(AffichageEdit,"1");
     Edit1->Text= AffichageEdit;
     
     }
     
    //---------------------------------------------------------------------------
    void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
    {
    StrCat(AffichageEdit,"2");
    Edit1->Text=AffichageEdit;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
    {
    StrCat(AffichageEdit,"3");
    Edit1->Text=AffichageEdit;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::aditionClick(TObject *Sender)
    {
    Operation=1;
    Memoir1=StrToInt(AffichageEdit)+ Resultat;
    StrCopy(AffichageEdit,EffaceChaine);
    Edit1->Text=AffichageEdit;
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::egaleClick(TObject *Sender)
    {
    if(Operation==1){
    Memoir2=StrToInt(AffichageEdit) ;
    Resultat=Memoir1 + Memoir2;
     
    Edit1->Text=Resultat;
     
    }
     
    if(Operation==2){
    Memoir2=StrToInt(AffichageEdit);
    Resultat=Memoir1 - Memoir2;
    Edit1->Text=Resultat;
     
    }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::soustractionClick(TObject *Sender)
    {
    Operation=2;
    Memoir1=StrToInt(AffichageEdit);
    StrCopy(AffichageEdit,EffaceChaine);
    Edit1->Text=AffichageEdit;
     
    }

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 131
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Si j'ai bien compris vous avez sur l'affichage:
    1 + 1 ( que vous tapez donc )
    = 2 ( le resultat est ajouté par le programme )
    et après vous voulez encore ajouté + 1
    Mais actuellement vous avez sur l'affichage:
    "1 + 1 = 2"
    La fonction qui gère la calcul, utilise un analyseur de chaine pour en trouver un int. Cette analyseur, s'il ne plante pas, ne prendra que le premier int de la chaine passée ( je parle de StrToInt() bien sur )
    Et la chaine passée c'est "1 + 1 = 2"
    Donc l'analyseur, s'il est intelligent, il retourne 1
    et vous revenez à avoir fait 1 + 1 ( qui est encore égal à deux )
    S'il n'est pas trop intelligent il retourne 0, votre résultat sera 1
    Sinon il plante lamentablement et retourne n'importe quoi
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut
    C'est exactement ça LittleWhite dans ce cas comment fait on pour que le + 1 s'ajoute au résultat? svp

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 131
    Billets dans le blog
    150
    Par défaut
    Il faut que vous analysiez la chaine de facon a ne garder que la fin (le dernier nombre). Je vous laisse méditer sur ce point, car cela me semble du C++ Builder et que je ne connais pas ou très peu ce truc.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Il faut que vous analysez la chaine de facon a ne garder que la fin ( le dernier nombre ). Je vous laisse mediter sur ce point, car cela me semble du C++ Builder et que je ne connais pas ou tres peu ce truc.

    oui c'est vrai c'est du c++ de builder lol

    ba je vais de ce pas essayer ce que vous me dite et je vous tien au couran

    en tou ka merci de vous interesser a mon probleme.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Il faut que vous analysez la chaine de facon a ne garder que la fin ( le dernier nombre ). Je vous laisse mediter sur ce point, car cela me semble du C++ Builder et que je ne connais pas ou tres peu ce truc.

    donc j'ai essayer de rectifier un peu mon code mai c'est du n'importe koi les resulta que sa me sort pourtant

    regardez la rectification et dite moi ce qui ne va pas svp:
    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
     
    void __fastcall TForm1::plusClick(TObject *Sender)
    {
     
     
    aff1 = StrToInt(affichage)+ resulta;
     stpcpy(affichage,affichageClear);
     
    Edit->Text=affichage ;
     
     
     
     }
     
     
     
     //---------------------------------------------------------------------------
    void __fastcall TForm1::egaleClick(TObject *Sender)
    {
     
     
    resulta= StrToInt(affichage) + aff1 ;
    stpcpy(affichage,affichageClear);
    Edit->Text=resulta;

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 131
    Billets dans le blog
    150
    Par défaut
    Pour dire ce qui ne va pas, il faut que je sache ce qu'est:

    affichage
    affichageClear
    resulta

    Sinon, une des autres solutions que j'ai à vous proposer, c'est lors de l'action sur le bouton '=' vous pouvez éffacer le calcul précédent, et n'afficher que son résultat ( plus proche de la calculatrice normale )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

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

Discussions similaires

  1. troncage d'un nombre après calcul en ttc
    Par marcandre dans le forum ASP
    Réponses: 3
    Dernier message: 23/03/2011, 10h06
  2. Réponses: 6
    Dernier message: 03/02/2010, 22h39
  3. calcule donne mauvais résultat
    Par fpascal dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/12/2008, 09h26
  4. Mauvais résultat aprés une formule de calcul complexe
    Par poufouille dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/12/2004, 00h12

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