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 :

Tableau de float.


Sujet :

C++

  1. #21
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    Citation Envoyé par Fred2209
    Car mon programme en fait et un peu plus compliqué et les valeurs que je rentre dans les tableaux sont calculées à l'aide des valeurs déjà présente dans les tableaux...

    sinon c'est Médinoc qui m'a donné l'instruction "static_cast"
    Et alors? tab.push_back(valeur) ça ajoutera la valeur au tableau, quelle qu'elle soit.

    Enfin bon, si tu veux mon avis, n'ecris jamais dans ton code qqch que tu ne comprends pas.
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  2. #22
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    C'est vrai tu as raison, mais je vais me renseigner là dessus.
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  3. #23
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Médinoc
    tab est un vecteur de float et non un vecteur de vecteurs.
    Par conséquent, tu ne peux pas ajouter ainsi un vecteur de float à tab...

    Essaie plutôt:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    tab.push_back(static_cast<float>(i));
    Pourquoi un static_cast ici? Le seul contexte où c'est nécessaire c'est quand les surcharges feraient préférer une autre fonction que celle désirée... et alors je pense a priori que surcharger était une mauvaise idée.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  4. #24
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Fred2209
    Car mon programme en fait et un peu plus compliqué et les valeurs que je rentre dans les tableaux sont calculées à l'aide des valeurs déjà présente dans les tableaux...

    sinon c'est Médinoc qui m'a donné l'instruction "static_cast"
    Si tu connais a priori la taille de ton tableau, plutôt que de l'agrandir petit à petit tu peux le définir avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<float> tab(10);
    ou tu peux lui donner une nouvelle taille avec
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  5. #25
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    Et justement je ne peux pas connaître la taille de mon tableau à l'avance même jusqu'à la dernière valeur rentrée c'est pour cela que je voudrais l'augmenter au fur et à mesure...
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  6. #26
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Mais déjà, il faut savoir ce que tu veux faire!
    push_back() ajoute la valeur passée en paramètre au tableau.

    Donc:
    • Si tu veux ajouter 1.5, tu dois simplement faire tab.push_back(1.5);
    • Alors que si tu veux ajouter i (qui est un entier), il te faut tab.push_back(static_cast<float>(i));
      (même si en fait, avec les promotions automatiques, le static_cast<> est peut-être inutile. Tu peux toujours tester sans et voir si ça compile toujours...).
    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.

  7. #27
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Médinoc
    (même si en fait, avec les promotions automatiques, le static_cast<> est peut-être inutile. Tu peux toujours tester sans et voir si ça compile toujours...).
    Ce l'est. En fait, dans les cas où c'est nécessaire, j'écrirais d'ailleurs plutôt float(i).
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  8. #28
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    Mais en fait si ce petit exemple marche, pour ce que j'ai à faire c'est ce qui me convient le mieux...




    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
    #include<vector>
     
    void fct1()
    {
     vector<float> tab1;
     vector<float> tab2;
     vector<float> tab3;
     
     for (int i = 1; i<10; i++)
     {
      tab1.push_back(static_cast<float>(i));
      tab2.push_back(static_cast<float>(i));
      tab3.push_back(static_cast<float>(i));
      tab1[i] = 1.5;  
      tab2[i] = 1.5;
      tab3[i] = 1.5;
     }
    }
    Parce qu'au final bien sur que ce n'est pas des valeurs fixes comme 1.5 que je vais mettre dedans...
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  9. #29
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Ce l'est. En fait, dans les cas où c'est nécessaire, j'écrirais d'ailleurs plutôt float(i).
    Mais j'ai testé le function-style cast, c'est aussi brutal que le C-Style cast, donc à bannir aussi.

    Fred2209 : Ben non ce n'est pas ce qui convient le mieux, tu fais deux opérations là où une seule suffit...
    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. #30
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    Tu veux dire parce que d'abord j'augmente la taille du tableau et apres je la remplie au lieu de l'agrandir et de la remplir en même temps..

    mais est ce que l'indice du tableau (ici c'est "i") va s'incrémenter de un en un si je fais directement un push.back ?
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  11. #31
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Médinoc
    Mais j'ai testé le function-style cast, c'est aussi brutal que le C-Style cast, donc à bannir aussi.
    J'aime pas mettre une syntaxe lourde pour quelque chose d'innocent.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  12. #32
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par Fred2209
    1- Tu veux dire parce que d'abord j'augmente la taille du tableau et apres je la remplie au lieu de l'agrandir et de la remplir en même temps..

    2- mais est ce que l'indice du tableau (ici c'est "i") va s'incrémenter de un en un si je fais directement un push.back ?
    1- oui

    2- littéralement push_back, c'est empiler_à-la-fin. Tu n'as même plus besoin d'un indice. Le dernier élement, ben ... c'est le dernier. Autantempiler directement l'élément final plutôt que d'empiler une valeur bateau que tu va remplacer aussitôt.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  13. #33
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    ok j'ai compris mais alors que fait l'instruction "static_cast" ?
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  14. #34
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Quiquonque fait du C++ devrait le savoir: Ici, ça convertit un int en float.
    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.

  15. #35
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Convertion explicite.
    Sans le moindre intérêt pour passer de int à float -- le contraire n'est pas vrai.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  16. #36
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Luc Hermitte
    Convertion explicite.
    Sans le moindre intérêt pour passer de int à float -- le contraire n'est pas vrai.
    Je vois deux cas où il y a un intérêt:
    - pour choisir la bonne surcharge (et sauf si c'est pour éviter une instantiation de template, je m'interrogerais sur la présence de surcharge)
    - pour passer l'argument correct à une fonction variadique.

    Aucun des deux cas ne doit être très courant.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  17. #37
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Dans ce cas-là un implicit_cast est peut-être plus approprié.
    Boost ftw

  18. #38
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    Et si je le redimensionne au fur et à mesure avec le fonction "tab.resize(x)" comme ceci est-ce que je garde toutes les valeurs précedemment rentrées ?


    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
     
    #include <vector>
     
    void main()
    {
     
     std::vector<float> tab;
     
     for (int i=1;i<10,i++)
     {
      tab.resize(i);
      tab[i] = 1.5;
     }
     
    }
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  19. #39
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Fred2209
    Et si je le redimensionne au fur et à mesure avec le fonction "tab.resize(x)" comme ceci est-ce que je garde toutes les valeurs précedemment rentrées ?
    Oui. Mais je n'ai toujours pas compris pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i=1;i<10,i++)
     {
      tab.push_back(1.5);
     }
    ne convient pas.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  20. #40
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Et si je le redimensionne au fur et à mesure avec le fonction "tab.resize(x)" comme ceci est-ce que je garde toutes les valeurs précedemment rentrées ?
    Fais plutôt le resize une fois pour toutes, ou utilise le constructeur de vector
    Boost ftw

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/08/2006, 14h25
  2. Réponses: 5
    Dernier message: 19/07/2006, 11h24
  3. Tri d'un tableau de float
    Par Jeane dans le forum C++
    Réponses: 19
    Dernier message: 24/04/2006, 17h27
  4. Conversion d'un tableau de float en double ?
    Par alex6891 dans le forum C++
    Réponses: 5
    Dernier message: 05/01/2006, 06h04
  5. Tableau de float
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/02/2005, 11h47

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