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 éclairé
    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
    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.

  2. #22
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    C'est vrai tu as raison, mais je vais me renseigner là dessus.

  3. #23
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    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.

  4. #24
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    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

  5. #25
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    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...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 401
    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 confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    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).

  8. #28
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    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...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 401
    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 éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    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 ?

  11. #31
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    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.

  12. #32
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 308
    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 308
    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 éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    ok j'ai compris mais alors que fait l'instruction "static_cast" ?

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 401
    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 confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 308
    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 308
    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 confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    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.

  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
    Par défaut
    Dans ce cas-là un implicit_cast est peut-être plus approprié.

  18. #38
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    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;
     }
     
    }

  19. #39
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    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.

  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
    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

+ 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, 15h25
  2. Réponses: 5
    Dernier message: 19/07/2006, 12h24
  3. Tri d'un tableau de float
    Par Jeane dans le forum C++
    Réponses: 19
    Dernier message: 24/04/2006, 18h27
  4. Conversion d'un tableau de float en double ?
    Par alex6891 dans le forum C++
    Réponses: 5
    Dernier message: 05/01/2006, 07h04
  5. Tableau de float
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/02/2005, 12h47

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