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 :

Addition des éléments d'une liste


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Par défaut Addition des éléments d'une liste
    Bonjour,

    Tout d'abord désolé si je ne suis pas dans la bonne catégorie mais je n'ai pas trouvé celle qui était la plus adéquate à mon sujet ...

    Dans le cadre d'un exercice je doit pouvoir ajouter des éléments à une liste (c'est ok) puis les additionner et afficher la somme dans un TextBox. J'ai essayé plusieurs solutions mais elles ne fonctionnent pas, ou n'effectuent pas la somme des nombres, mais de leurs positions comme dans le code ci-dessous:

    Nom : Capt.PNG
Affichages : 2999
Taille : 9,1 Ko





    Quelqu’un pourrait me mettre sur la piste ?

    Merci !

  2. #2
    Membre chevronné

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Par défaut
    Bonjour,
    Pas le droit à la std:: .?oO

  3. #3
    Membre éprouvé
    Homme Profil pro
    sans activité
    Inscrit en
    Janvier 2016
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans activité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 76
    Par défaut
    Bonjour Rianflo,

    Je pense que tu trouveras la réponse facilement...

    Pose toi les bonnes questions, par exemple :

    -Qu'est que I?
    -Où sont les éléments de ta liste et où est ta liste?


    Sinon, à quoi sert ta variable A? et à quoi sert ta variable Element?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut et bienvenue,

    merci de mettre le code en texte via balises CODE.
    Ensuite pour ton problème, tu sommes les I qui sont... des index et certainement pas les valeurs espérées.
    Enfin c'est du C++/Cx ou C++/CLI non ?
    A quoi sert A ? Et il n'a pas l'air bien initialisé. T'as aucun warning à la compilation ?
    A quoi sert Element dans la boucle ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Par défaut
    MaximeCh,
    Je penses pas qu'on y a droit, vu que je n'en ai très peu entendu parlé en cours


    rnr72,

    Je penses pas que I soit bien utilisé dans ce code, car I représente la valeur initiale au premier tour de la boucle, puis à chaque fois incrémenté de 1 (I++) à chaque passage dans la boucle, autrement dit je penses que pour l'addition des éléments d'une liste sa ne sert à rien ?

    Les éléments sont encodé par l'utilisateur qui les ajoutes dans une ListBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     private void Btn_Ajouter_Click(object sender, EventArgs e)
            {
                double Nombre;
                Nombre = Convert.ToDouble(Txt_Nombre.Text);
                List_Elements.Items.Add(Nombre);
            }
    Bousk,

    Oui c'est du C++/CLI, je me suis rendu compte que additionner les I avait pas de sens

    Le A ne sert à rien, un camarade m'avait dit de reprendre les éléments du Btn_Ajouter (les éléments de la liste) que j'avais aussi appelé "A", mais vu que c'est pas la même procédure ...

    Enfaite avec ma boucle je voulais que tout les éléments présent dans la liste soit passé en revue et qu'ils s'additionnent les uns les autres. Dans ma boucle, "Element" représente le premier élément de la liste que l'utilisateur a encoder. Je voulais faire un du style: Element1 + Element2 + Element3 + ...

    Je n'ai aucun message d'erreur au lancement...

    Pour résumé je penses surtout qu'il y a des choses que j'utilise, mais sans savoir entièrement pourquoi... Beaucoup de gens me disent que les projets que je vois en cours pourrait être fait plus simplement, mais je n'est pas d'autres choix

  6. #6
    Membre éprouvé
    Homme Profil pro
    sans activité
    Inscrit en
    Janvier 2016
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans activité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 76
    Par défaut
    Effectivement Rianflo, I est ce que l'on appelle un index, c'est lui que tu utilises pour accéder aux éléments de ta liste.

    Ta variable Element ne sert à rien car tu l'initialise mais ne l'utilise pas et à chaque tour de boucle, elle change.

    Et oui, la variable A ne sert à rien car tu ne l'utilises pas.

    Donc nous sommes d'accord, additionner les index n'a pas vraiment de sens mais je peux te dire que tu utiliseras I dans le calcul de ta somme mais pas comme tu le fais. Tu trouveras la réponse en répondant à cette question : A quoi me sert I?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Par défaut
    Trouvé !

    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
      private void Btn_Ajouter_Click(object sender, EventArgs e)
            {
                double Nombre;
                Nombre = Convert.ToDouble(Txt_Nombre.Text);
                List_Element.Items.Add(Nombre);
            }
     
            private void Btn_Calculer_Click(object sender, EventArgs e)
            {
                int I, N = List_Element.Items.Count;
                double somme = 0;
                double[] A;
                A = new double[N];
     
                for (I = 0; I <= N - 1; I++)
                {
                    A[I] = Convert.ToDouble(List_Element.Items[I]);
                    somme = somme + A[I];
                }
                Txt_Total.Text = Convert.ToString(somme);
     
            }
    Le I sert à passé en revue les lignes de la liste, dans le projet il nous permet donc à chaque passage dans la boucle de passé à l'élément suivant (A) et donc d'obtenir une nouvelle somme à chaque passage.

    Un grand merci pour votre aide, dès maintenant je garderais en tête que rien ne vaut une bonne analyse !

  8. #8
    Membre éprouvé
    Homme Profil pro
    sans activité
    Inscrit en
    Janvier 2016
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans activité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 76
    Par défaut
    Je suis content que tu es trouvé.

    Le raisonnement est juste mais je dois t'avouer que ta variable A ne sert toujours à rien.

    En gros tu fais :

    machin = truc;

    bidule = bidule + machin;

    fais simplement :

    bidule += truc;

    Et tu gagne une variable! Sans parler des fuites de mémoires! Quant tu fais un new, il faut toujours un delete sinon fuites!

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    Ce code ne ressemble même pas à du C++/CLI, on dirait plutôt du C#.

    En C++/CLI, ça donnerait plutôt ceci:
    Code C++/CLI : 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
    	private: void Btn_Ajouter_Click(Object^ sender, EventArgs^ e)
    	{
    		double Nombre;
    		Nombre = Convert::ToDouble(Txt_Nombre->Text);
    		List_Element->Items->Add(Nombre);
    	}
     
    	private: void Btn_Calculer_Click(Object^ sender, EventArgs^ e)
    	{
    		int I, N = List_Element->Items->Count;
    		double somme = 0;
    		array<double>^ A;
    		A = gcnew array<double>(N);
     
    		for(I = 0; I <= N - 1; I++)
    		{
    			A[I] = Convert::ToDouble(List_Element->Items[I]);
    			somme = somme + A[I];
    		}
    		Txt_Total->Text = Convert::ToString(somme);
     
    	}
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Par défaut
    Oui on gagne une variable juste !

    Merci de m'avoir mis sur la piste, je penses que sa m'aidera beaucoup dans mon apprentissage notamment en me posant les "bonnes questions" !

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    Au passage, cette-ligne:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    for(I = 0; I <= N - 1; I++)

    Traditionnellement, pour parcourir un tableau zéro-indexé de longueur N, on ne se complique pas la tâche avec un <= N - 1, mais on utilise < N directement:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    for(I = 0 ; I < N ; I++)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre éprouvé
    Homme Profil pro
    sans activité
    Inscrit en
    Janvier 2016
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans activité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 76
    Par défaut
    Rianflo, au plaisir d'avoir pu t'aider.

    Mais ce n'est pas juste une variable, un double fait 4 octets/32 bits 64 bits (merci Médinoc pour la précision), multiplier par la taille de ta liste et en plus avec des fuites et ce à chaque appel de ta fonction.

    Cela semble insignifiant mais imagine ça sur un serveur...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    Un double faisait 32 bits sous DOS à l'époque de QuickC, de nos jours "double précision" signifie 64 bits. Donc, deux fois plus de place.

    Par contre, si c'est du .Net, alors ce code est sans fuite (il n'y a rien ici qui ne soit pris en charge par le GC). Mais ça ne rend pas le tableau moins inutile.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    En C++/Cli il faut faire ref new (ou gcnew) pour créer un pointeur managé non ? Là c'est un new vide, donc non managé
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    Citation Envoyé par Bousk Voir le message
    En C++/Cli il faut faire ref new (ou gcnew) pour créer un pointeur managé non ? Là c'est un new vide, donc non managé
    Citation Envoyé par Médinoc
    Ce code ne ressemble même pas à du C++/CLI, on dirait plutôt du C#.
    Je réitère, le code posté ne compile même pas en C++ ou C++/CLI.
    Et le new de C# correspond au gcnew du C++/CLI.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. affichage des éléments d'une liste horizontalement
    Par progamer54 dans le forum JSF
    Réponses: 7
    Dernier message: 16/04/2007, 10h34
  2. [Firefox] Pixel au-dessus des éléments d'une liste
    Par Marco85 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/11/2006, 09h22
  3. Supprimer des éléments d'une liste
    Par espadon1 dans le forum Langage
    Réponses: 2
    Dernier message: 31/05/2006, 15h08
  4. Eviter l'affichage des éléments d'une liste déroulante
    Par auriolbeach dans le forum Access
    Réponses: 1
    Dernier message: 28/02/2006, 07h50
  5. [CSS]Changer l'interligne des éléments d'une liste à puces
    Par khany dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/03/2005, 13h57

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