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. #1
    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 Tableau de float.
    Salut,

    Je veux créer un tableau ( 1 dimension) de variables de type float dont j'augmenterai la taille au fur et à mesure ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void main()
    {
     
     float *tab=0;
     
     for (int i=0;i<10;i++)
     {
      tab = new float * [i];
     }
    }
    Seulement çà ne marche pas... est ce quelqu'un peut m'aider, merci.
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  2. #2
    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
    std::vector plutôt que de t'amuser à le réinventer avec les pointeurs.

    int main(), pas void main().
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  3. #3
    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
    ça ne marche pas parce qu'il me semble que new n'est pas réallocable

    Donc soit tu fais du C et tu utilises malloc et realloc, soit tu fais du c++ et tu utilises un std::vector (#include <vector>), ce que je te conseille.

    Pour plus de précision sur ce conteneur, soit tu cherches dans les cours/faq du site, soit tu vas directement sur le site de la STL
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  4. #4
    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 Jean-Marc.Bourguet
    int main(), pas void main().
    Tiens, pourquoi on a pas le droit de faire un void main() ?
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  5. #5
    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 Faiche
    Tiens, pourquoi on a pas le droit de faire un void main() ?
    Parce que la norme indique deux signatures portables pour main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int main();
    int main(int, char**);
    autorise d'autres signatures à être supportées par l'implémentation mais demande qu'elles retournent toutes int.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  6. #6
    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
    Donc si je vous comprend bien, il vaut mieux que je fasse comme suit si dans je veux créer un tableau 1 dimension, augmenter sa taille au fur et à mesure et rentrer 1.5 comme valeur partout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include<vector>
     
    int main()
    {
     vector<float> tab;
     
     for (int i = 1; i<10; i++)
     {
      tab.push_back(vector<float>(i));
      tab[i] = 1.5;
     }
    }
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  7. #7
    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
    ou alors tu pourrais faire simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    int main()
    {
     std::vector<float> tab;
     
     for (int i = 1; i<10; i++)
     {
        tab.push_back(1.5);
     }
    
     return 0;
    }
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  8. #8
    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
    Dans ton exemple ta variable i ne sert plus, non?
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  9. #9
    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
    Elle sert à boucler, c'est déjà pas mal.
    Et dans cet exemple, le #include <vector> est toujours indispensable.
    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
    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
    Dans ton exemple ta variable i ne sert plus, non?
    Ben si tu enleves le i ta boucle marche plus des masses.

    Sinon, petit détail mais qui a son importance : un tableau (ou vecteur ou string) commence à l'indice 0 et va jusqu à l'indice (taille - 1)
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  11. #11
    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 merci je vais essayer...
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  12. #12
    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 vu que les données que je dois rentrer sont dans un tableau exterieur je dois faire comme suit, dans cette exemple je rentre 1.5 mais en vrai c'est une moyenne de valeurs qui sont dans un autre tableau, enfin, le probleme c'est que ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include<vector>
     
    int main()
    {
     vector<float> tab;
     
     for (int i = 1; i<10; i++)
     {
      tab.push_back(vector<float>(i));
      tab[i] = 1.5;
     }
    }
    Et il me dit,
    [C++ Error] FctInterface.cpp(527): E2285 Could not find a match for 'vector<float,allocator<float> >::push_back(vector<float,allocator<float> >)'
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  13. #13
    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
    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));
    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
    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
    Parce qu'en fait il me faut gérer l'incrémentation de la variable i dans tab[i]
    c'est pour ça, alors si je fait ça, c'est bon ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include<vector>
     
    int main()
    {
     vector<float> tab;
     
     for (int i = 1; i<10; i++)
     {
      tab[i] = 1.5;
     }
    }
    Et la taille augmente toute seule ?
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  15. #15
    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
    Attend je vais essayer avec static, merci, je n'avais pas vu...
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  16. #16
    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
    Je ne sais pas.
    Pour ajouter automatiquement à la fin, il est préférable d'utiliser push_back()...
    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.

  17. #17
    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
    Merci avec "static_cast" çà marche...
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  18. #18
    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
    Donc j'ai fait ça et ça marche (avec 3 tableaux) :

    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
     
    #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;
     }
    }
    Sauf que maintenant je dois récupérer ces 3 tableaux dans une autre fonction Fct2, et je n'arrive pas à trouver comment je pourrais faire ?
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

  19. #19
    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
    Le static_cast il sort d'où ? C'est quoi le besoin la ?

    Et pourquoi tu tiens absolument a D'ABORD ajouter une case PUIS remplir la case plutot que d'ajouter la case remplie en faisant tab.push_back(<valeur flottante>) ?

    et ensuite, si tu veux passer des variables dans une autre fonction, tu passes leur références en argument de l'autre fonction, c'est la base ça.
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  20. #20
    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
    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"
    " l'imagination est plus importante que le savoir. "
    Albert Einstein.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 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