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

 Delphi Discussion :

Addition de 5 nombres !


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut Addition de 5 nombres !
    Bonjour à toutes et à tous,

    J'aimerai réaliser un jeux avec des TEdit, il s'agit d'écrire 5 nombres de 5 chiffres dans 5 TEdit et de les additionner.

    Tedit6 sera le total (c'est ok).

    A ce stade pas de problème.

    Tedit 7 sera celui par rapport au 1er nombre.

    Mais avec le 1er TEdit, dès que le 1er nombre de 5 chiffres est écrit, il faut recopier ce nombre dans le TEdit7 en rajoutant un 2 (toujours) devant le 1er chiffre de ce nombre et en enlevant 2 (toujours) du dernier chiffre de ce nombre.

    La difficulté c'est que si le dernier chiffre est un 0, il faudra décompter 2 sur les deux derniers chiffres, si les deux derniers chiffres sont des 0, il faudra décompter 2 sur les trois derniers chiffres, etc....

    Exemple :

    le 1er nombre est 45789, Tedit7 sera 245787

    le 1er nombre est 45780, Tedit7 sera 245778

    le 1er nombre est 45700, Tedit7 sera 245698

    etc....

    Merci de votre attention,

    @+,

    Cincap

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    quelque chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TEdit7.Text := '2' + Trim(TEdit7.Text);
    TEdit7.Text := IntToStr(StrToInt(TEdit7.Text) - 2);
    Merci d'ajouter un sur les tags qui vous ont aidé

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    @ dehorter olivier, merci de ta suggestion rapide.

    TEdit7.Text := '2' + Trim(TEdit7.Text);
    TEdit7.Text := IntToStr(StrToInt(TEdit7.Text) - 2);
    Tu as voulu dire ceci car c'est le résultat du Tedit1 que je dois récupérer dans le Tedit7 :

    Edit7.Text := '2' + Trim(Edit1.Text);
    Edit7.Text := IntToStr(StrToInt(Edit1.Text) - 2);
    Les suggestions séparées et corrigées fonctionnent, le problème c'est que dès le 1er nombre rentré, je clique sur un bouton pour faire l'opération ajouter 2 devant le 1er chiffre (comme en 1) et soustraire 2 du ou des derniers chiffres (comme en 2).

    Edit : En testant ceci, j'ai bien le résultat escompté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Edit7.Text := '2' + IntToStr(StrToInt(Edit1.Text) - 2);
    Merci donc de ton intervention et ta solution

    @+,

    Cincap

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    @ dehorter olivier,

    en retournant le code dans tous les sens, j'obtiens une erreur avec le nombre de 10000, j'obtiens 29998 (faux), avec 10005, j'obtiens 210003 (vrai) et avec 11000 c'est ok, j'obtiens 210998 soit un nombre de 6 chiffres ce qui est normal pour une addition de 5 nombres de 5 chiffres.

    Ceci pour parer les éventualités car le 1er nombre est noté par celui a qui on fait la blague.

    @+,

    Cincap

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Quel devrait être le nombre correct ?

    En tout cas, il faut jouer sur les priorités à l'aide des parenthèses .
    Merci d'ajouter un sur les tags qui vous ont aidé

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    J'ai testé ceci et c'est correct, mais il y a peut être quelque chose de plus propre on ne sait jamais avec les cracks de ce forum.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.BreponseClick(Sender: TObject);
    begin
     
    //Edit7.Text := '2' + Trim(Edit1.Text);
     
    if edit1.Text = '10000' then Edit7.Text := '20'  + IntToStr(StrToInt(Edit1.Text) - 2) else
    Edit7.Text := '2'  + IntToStr(StrToInt(Edit1.Text) - 2);
     
    end;
    @+,

    Cincap

    @+,

    Cincap

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    et comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit7.Text := IntToStr(StrToInt('2' + trim(Edit1.Text)) - 2);
    Merci d'ajouter un sur les tags qui vous ont aidé

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit7.Text := FormatFloat('200000', StrToInt(Edit1.Text) -2);
    Le 2 n'affecte pas le formatage du nombre

  9. #9
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Personne n'a fait la remarque, mais je te conseille fortement de renommer tes composants ... Parce que Edit1,2,3,4,5,6,7 ca commence a faire ... En plus, en lisant le code, on comprendrait directement ce qu'il fait ...

    Bonne chance

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    @ mick605, tu as raison, c'est ce que je fais toujours lorsque l'application est en phase terminale, ce qui n'est pas encore le cas, par exemple (Edit7 deviendra Edreponse).

    @ Andnotor, cela provoque une erreur lors de la compilation "n'est pas une valeur entière correcte";

    @ dehorter olivier, cela fonctionne correctement comme demandé.

    Edit : Désolé pour Andnotor, il a aussi raison car après coup (connaissant sa justesse !), j'ai relu ce que j'avais testé avec son code et cela fonctionne aussi correctement, désolé;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TFnombre.BreponseClick(Sender: TObject);
    begin
     
    {if edit1.Text = '10000' then Edreponse.Text := '20'  + IntToStr(StrToInt(Edit1.Text) - 2) else
    Edreponse.Text := '2'  + IntToStr(StrToInt(Edit1.Text) - 2);}
     
    //Fonctionne aussi
    //Edreponse.Text := IntToStr(StrToInt('2' + trim(Edit1.Text)) - 2);
     
    Edreponse.Text := FormatFloat('200000', StrToInt(Ed1.Text) -2);
     
    end;
    Encore merci à tous,

    @+

    Cincap

  11. #11
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Ok, c'est juste plus simple au fur et a mesure...

    Sinon, pour ton problème, c'est pas plutôt une erreur a l'exécution ? Regarde du coté des TryStrToInt et StrToIntDef (F1 pour l'aide).

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 10/10/2010, 19h38
  2. Réponses: 2
    Dernier message: 19/04/2010, 17h12
  3. Additions de grand nombres
    Par Cedrun dans le forum Ada
    Réponses: 10
    Dernier message: 09/09/2008, 10h13
  4. Addition de deux nombre de 128 bits
    Par abdelkaderg54 dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 20/05/2008, 18h47
  5. Addition de 2 nombres et affichage des flags CF et OF
    Par raou123 dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 11/04/2006, 17h11

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