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 :

Gestion d'un tableau 2D pour Algorithme MC


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Gestion d'un tableau 2D pour Algorithme MC
    Bonjour à tous,

    Alors voilà, j'aimerai écrire un programme propre de l'aglo de Monte Carlo.
    Je tiens à préciser que je débute complétement avec ce qui est POO (classes etc...) je sais juste programmer basiquement (genre boucle for etc...).

    Pour cela, j'aimerai créer un classe lattice qui soit :
    un tableau de taille NxM rempli d'entier -1 ou 1 (voir 0).

    Mais le truc, c'est que je ne sais pas comment mettre un tableau 2D en attribut d'une classe ....
    Est-ce que quelqu'un pourrait m'aider ?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    On ne le répètera jamais assez: lorsque l'on veut gérer une matrice pleine de L lignes et de C colonnes, il est beaucoup plus facile de considérer que l'on doit travailler sur un tableau à une dimension composé de L * C éléments.

    Il s'agit alors, pour accéder à un élément donné d'utiliser la formule position = (numéro de ligne * nombre de colonnes) + (numéro de la colonne)Il est, en outre, beaucoup plus facile d'utiliser la classe vector, disponible dans l'espace de noms std par simple inclusion du fichier d'en-tête <vector> que de se "casser la tête" à essayer de gérer soi même l'allocation dynamique pour gérer le tableau de données

    Enfin, si ton problème porte sur le fait de déclarer une variable membre dans une classe, je ne peux que te conseiller de te reporter à ton cours ou à un des nombreux tutoriels que l'on trouve sur le net (et sur ce site en particulier)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    A vrai dire, je ne sais pas du tout ce qu'est une allocation dynamique ...
    J'utilise math.h qui me permet d'écrire des truc comme
    Tableau[x][y].
    Et du coup, c'est assez facile à lire ...

    Pour ce qui est de déclarer une variable dans la classe. J'ai trouvé comment faire pour des types simples (int, double, etc...) mais pas pour un truc comme un tableau d'entier t[x][y] .... C'est pour cela que je posais la question

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Citation Envoyé par Sailx Voir le message
    A vrai dire, je ne sais pas du tout ce qu'est une allocation dynamique ...
    Je renouvelle donc avec insistance mon premier conseil : commence par lire (et par comprendre!!!) un cours ou un tutorial.

    J'utilise math.h qui me permet d'écrire des truc comme
    Tableau[x][y].
    Et du coup, c'est assez facile à lire ...
    mat.h n'a strictement rien à voir dans l'histoire...

    Ce fichier d'en-tête fourni les prototypes de certaines fonctions mathématiques "avancées" (sinus, cosinus, etc)
    Pour ce qui est de déclarer une variable dans la classe. J'ai trouvé comment faire pour des types simples (int, double, etc...) mais pas pour un truc comme un tableau d'entier t[x][y] .... C'est pour cela que je posais la question
    Je rajoutes à mon conseil : n'essaye pas de bruler les étapes.

    Habitues toi en priorité (à peu près dans cet ordre):
    1. à la syntaxe de C++
    2. aux différentes classes fournies par le standard
    3. aux principes de base de la programmation
    4. aux principes de base de la programmation orienté objets et à la manière dont c'est mis en oeuvre en C++
    Quand tu en sera au point 3 ou 4, tu trouveras la réponse par toi meme

    [EDIT]Quant à l'allocation dynamique de la mémoire, elle devrait être abordée au niveau du point 4 dans les bons cours, mais tu risque fort de la rencontrer dés le point 1 dans les cours basés sur une approche "historique"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par Sailx Voir le message
    A vrai dire, je ne sais pas du tout ce qu'est une allocation dynamique ...
    J'utilise math.h qui me permet d'écrire des truc comme
    Tableau[x][y].
    Hello

    l'allocation statique, c'est une allocation faite "coté compilation" (exemple int i; ou int tab_i[42], la taille est connue à la compilation.

    Dans le cas où la taille est inconnue à la compilation (le meilleur exemple est : std::cin >> i; int *pi = new int[i]; // pi = tableau de i éléments), il faut penser à libérer la mémoire (delete[] pi)

    (=> Les smart pointers sont très utiles utiles dans ce cas.)
    Citation Envoyé par koala01 Voir le message
    Je rajoutes à mon conseil : n'essaye pas de bruler les étapes.
    Je ne peux qu'insister la dessus. La gestion de la mémoire est quelque chose d'essentiel quand on code en C++, mais une compréhension basique du langage est primordiale.

    Regarde du coté des opérateurs, et en particulier du coté de l'opérateur []().

  6. #6
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    J'ajoute qu'on ne dira jamais assez que ça :

    c'est aussi facile à lire que

    et que ça laisse plus de souplesse dans l'implémentation.

  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Bonjour,
    revenons-en aux classiques:
    comment et pourquoi
    utiliser operator() pour implémenter une matrice.

    PS: encore une fois, merci à celle, celui ou ceux qui ont écrit ces deux entrées de la FAQ.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/03/2006, 05h19
  2. [Stratégie] taille de tableau max pour alleger les ressources systemes
    Par ceres02 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 24/02/2006, 19h06
  3. BTS Info de Gestion passé aujourd'hui question pour SQL
    Par red210 dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 29/05/2005, 14h48
  4. Besoin d'aide pour algorithme de traitement d'images
    Par Zenman94 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 07/04/2005, 14h31
  5. Gestion d'un tableau dynamique
    Par almisuifre dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/02/2005, 19h07

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