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 :

[debutant] declaration et initialisation de tableaux


Sujet :

C++

  1. #1
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut [debutant] declaration et initialisation de tableaux
    Bonjour

    Je viens de m'apercevoir que je ne pouvais remplir un tableau entierement avec des accolades que si je le fait au momemt de la declaration. le code suivant genere une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int tab [4];
    tab = {1, 2, 3, 4};
    et pas celui ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int tab [4] = {1, 2, 3, 4};
    je fais comment moi pour remplir un tableau de 4x4 avec des valeurs precises moi?? je vais quand meme pas ecrire 16 fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    tab [0] =  ...
    tab [1] = ...
    ...
    Avant de poser une question, lire la Avant de répondre, lire la question

  2. #2
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut Re: [debutant] declaration et initialisation de tableaux
    Un tableau de 4x4 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int tab[4][4] = 
    { { 7, 2, -2, 8 },
      { 1, 2, 4, -2 },
      { -4, 0, 0, 4 },
      { 1, -1, 1, 1 } };
    J'ai mis des valeurs vraiment quelconques pour prévoir les remarques du genre "fais une boucle for"...
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 73
    Points : 52
    Points
    52
    Par défaut
    Pour remplir ton tableau de 4*4, il faut faire:
    int tab[4][4] = {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};

  4. #4
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut
    oui mais la tu fais bien ta declaration et ton initialisation ensemble

    Mon tableau est un parametre d'une classe et g besoin de l'initialiser dans une fonction

    le probleme ne porte pas sur les dimensions de mon tableau...
    Avant de poser une question, lire la Avant de répondre, lire la question

  5. #5
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par harsh
    oui mais la tu fais bien ta declaration et ton initialisation ensemble

    Mon tableau est un parametre d'une classe et g besoin de l'initialiser dans une fonction

    le probleme ne porte pas sur les dimensions de mon tableau...
    Dans ce cas tu dois passer par chaque case, tu ne peux pas faire autrement.
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  6. #6
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut
    mais je croyais etre dans un monde tout bo moi!!!

    Tant qu'a pas mourir con, pourquoi?

    ce probleme doit arriver regulierement (une matrice qui s'initialise avec des parametres d'une fonction ...)



    c'est de l'oursage grave... c++ de

    merci pour vos reponses
    Avant de poser une question, lire la Avant de répondre, lire la question

  7. #7
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par harsh
    mais je croyais etre dans un monde tout bo moi!!!

    Tant qu'a pas mourir con, pourquoi?

    ce probleme doit arriver regulierement (une matrice qui s'initialise avec des parametres d'une fonction ...)



    c'est de l'oursage grave... c++ de

    merci pour vos reponses
    Mais tu peux garder un ensemble de modèles !!!
    Je m'explique: tu garde un ensemble de tableaux initialisés à leur déclaration, et quand tu dois initialiser un tableau passé en paramètre, tu n'a plus qu'à copier les cases du tableau modèle, avec une boucle...

    Et si la taille du tableau passé en paramètre est variable, alors de toutes façons la méthode pour initialiser le tableau d'un coup sans passer par chaque case n'aurait pas fonctionné, même si c'était possible de le faire... Rien à voir avec une limitation du C++.
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  8. #8
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut
    Gt justement en train de ruminer un truc comme ca

    Merci pour ta patience, bonne journee a.... Nancy
    Avant de poser une question, lire la Avant de répondre, lire la question

  9. #9
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Bonjour, il y a plus facile et plus rapide que de copier par une boucle, en utilisant les bonnes vieilles routines C:
    memcpy(void *dest, void *Source, int size);

    Ou, si tu veux être très C++, utilise des vecteurs.

    Même si le vecteur est normalement plus utile pour des tableaux devant changer de taille, le vector est un objet, il a notamment des méthodes de recopies, très utiles.

  10. #10
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    memcpy(void *dest, void *Source, int size);
    le plus simple, le plus rapide

  11. #11
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut
    Merci

    fait plaisir de voir un forum aussi vivant
    Avant de poser une question, lire la Avant de répondre, lire la question

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par Ti-R
    memcpy(void *dest, void *Source, int size);
    le plus simple, le plus rapide
    std::copy(begin, end, dest). Tout aussi rapide (dans tous les cas ?) et sans risque de faire une erreur de typage ou de taille.

  13. #13
    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
    Sinon il y a un truc dans boost qui permet de simplifier l'écriture des remplissages de tableaux et autres vecteurs.
    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...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Debutant]Declaration et initialisation de tableau.
    Par vbbarent dans le forum Débuter
    Réponses: 2
    Dernier message: 23/04/2008, 14h36
  2. [Debutant]Declaration / init d'objet
    Par Jabbal'H dans le forum Débuter
    Réponses: 22
    Dernier message: 02/08/2006, 23h49
  3. [Debutant].Declaration classe externe ?
    Par SebRs dans le forum Débuter
    Réponses: 1
    Dernier message: 19/04/2006, 19h21
  4. Initialisation de tableaux
    Par bradley vier dans le forum C++
    Réponses: 11
    Dernier message: 02/03/2005, 13h53
  5. [debutant] declaration variable
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/06/2004, 16h59

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