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 :

COmment faire une SOMME


Sujet :

C++

  1. #1
    Membre régulier Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Points : 97
    Points
    97
    Par défaut COmment faire une SOMME
    Bonjour , j'utilise vb 2005 , un projet windows form .

    Sur ma Form je dispose de 4 textbox 'notes' et une 'resultat', et d'un bouton 'somme', jaimerai lors de l'appui sur le bouton , s'affiche dans 'resultat' la somme des 4 'notes' , donc voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    				 Form1::resultat->Text = (Form1::note1->Text + Form1::note2->Text + Form1::note3->Text +Form1::note4->Text);
    			 }
    mais malheureusement ca concataine les nombres , cad si
    note1 : 12
    note2 : 0
    note 3: 4
    note4 : 18
    cela donne
    resultat : 120418
    comment faire pour effectuer la somme ALGEBRIQUE ???

    Amicalement lucas
    Amis programmeurs

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 71
    Points : 61
    Points
    61
    Par défaut
    salut,
    dans ton code, tu additionnes des chaines de caractères, c'est normal que tu tombes sur ce résultat. il faut transformer chaque chaine en nombre, additionner ces nombres, et enfin transformer la somme en chaine.

    sinon, tu dis que tu travailles sous VB, et ton code me parait un peu bizarre pour du C++ (mais bon, étant seulement étudiant, j'ai pas la science infuse). comment cela se fait ?

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 632
    Points : 30 711
    Points
    30 711
    Par défaut
    Salut,
    Citation Envoyé par neuro6 Voir le message
    salut,
    dans ton code, tu additionnes des chaines de caractères, c'est normal que tu tombes sur ce résultat. il faut transformer chaque chaine en nombre, additionner ces nombres, et enfin transformer la somme en chaine.

    sinon, tu dis que tu travailles sous VB, et ton code me parait un peu bizarre pour du C++ (mais bon, étant seulement étudiant, j'ai pas la science infuse). comment cela se fait ?
    En fait, il voulait surement parler de VS (Visual Studio, qui permet aussi bien de travailler en VB qu'en C++, entre autres)...

    Par contre, le code ne me semble pas *si* bizard que cela pour du C++ (surtout quand on sait que VS adore litéralement les "propriétés" )

    Bon, pour répondre quand même un peu à la question, il me *semble* (car visual studio, est sans doute la chose avec laquelle je garde le plus de distance possible si je peux m'en passer ) que les propriétés Text sont de type "AnsiString" (ou fort similaire)...

    Il me *semble* aussi qu'il existe des méthodes du genre de ToString ToInt ToFloat et autres du même acabit (meme si c'est peut être ToStr )

    Si de telles méthodes n'existent pas, il faudra passer "manuellement" d'une valeur sous forme d'une chaîne de caractères à une valeur entière, et pour cela, en fonction du type de la chaine (normal/unicode), il s'agira d'utiliser les bonnes vieilles méthodes de conversion (std::stringstream/ std::wstringstream) comme tu peux en trouver des exemples dans la FAQ

    En gros, cela ferait quelque chose du genre de
    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
     
    std::stringstream ss;
    /* remplissage du flux */ 
    ss << Form1::note1->Text<<" "
       <<Form1::note2->Text <<" "
       <<Form1::note3->Text<<" "
       <<Form1::note4->Text;
    size_t total=0;
    for (size_t i=0;i<4;i++) //il y a... 4 notes à récupérer :D
    {
        size_t val;
        total+= val;
    }
    // "YAPUKA" reconvertir le total en chaine de caractrères
    ss<<total;
    std::string str;
    ss>>str;
    //et à le placer dans le chamsp ad-hoc
    Form1::resultat->Text = str;
    Nota: dans le code présenté, je suis parti du principe que les chaines utilisées par la propriété Text était des chaines non unicode... il n'est pas exclu que ce soit des chaines unicode, auquel cas il faudrait remplacer std::stringstream par std::wstringstream et std::string par std::wstring

    Mais, comme je l'ai signalé plus haut, je ne serais pas étonné qu'il existe des méthodes de conversion toutes faites

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 71
    Points : 61
    Points
    61
    Par défaut
    Ok, j'apprends des choses ; j'en profite pour poser la question, que signifient les "^" dans l'en-tête de la fonction? ca a un sens, comme les "&" ou "*" ?

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Il ne s'agit pas de C++, mais de C++/CLI, un langage inventé par Microsoft pour faire le pont entre le C++ et le monde .NET. Il a donc l'immense privilège d'allier les performances de .NET avec la simplicité du C++

    Pour ce qui est d'y convertir des chaînes en entier, le plus simple est d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System::Int32 note = System::Int32::Parse(Form1::note1->Text);
    Je crois qu'il y a sur ce site un forum spécialisé en C++/CLI.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Le forum est là: C++/CLI.

    D'ailleurs, je vois plus souvent System::Convert::ToInt32() que System::Int32:arse(), mais ce doit être plus ou moins équivalent (si ça se trouve, le second utilise le premier...)

Discussions similaires

  1. Comment faire une somme dans un fichier xml
    Par netdoux dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 01/03/2012, 18h42
  2. comment faire une somme?
    Par teamgirls dans le forum IHM
    Réponses: 1
    Dernier message: 21/05/2008, 07h34
  3. Réponses: 13
    Dernier message: 05/11/2007, 10h00
  4. Réponses: 3
    Dernier message: 09/05/2007, 12h43
  5. Réponses: 10
    Dernier message: 03/10/2006, 21h19

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