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 :

déclaration et initialisation d'une matrice


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Par défaut déclaration et initialisation d'une matrice
    bonjour à tous,

    il y a un truc que je comprend pas. Voici une portion abrégé de mon programme :

    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
    20
    21
    22
    23
    24
    25
    26
     
    // ...
     
    // déclarations des variables globales :
    int a ;
    const int b = 2*a ;
    const int c = a*a ;
    int matrice[b][b][c];
     
    // déclaration du prototype de la fonction :
    void f1();
     
    int main()
    {
         // ... (lors de ces instructions, la variable 'matrice' n'est pas appelé)
         f1 ;
         // ... 
         return 0 ;
    }
     
    void f1()
    {
         cout << "Entrer une valeur entière pour 'a' : " << flush ;
         cin >> a ;
         // vérification si la valeur entrer pour 'a' est bien entière
    }
    remarque :
    j'ai essayé de placé la déclaration de ma matrice sous la fonction principale 'main', résultat ... aucun changement malheureusement.

    En gros le bute de cette partie de mon programme, c'est que ce soit l'utilisateur du programme qui choisisse une valeur pour 'a', ensuite 'a' est pris en compte dans initialisations des varaibles constantes, jusque là pas de problème mais ensuite il veut pas prendre les variables 'b' et 'c' comme dimension de ma matrice ... pourquoi ???

    merci d'avance pour les réponses.

  2. #2
    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
    jusque là pas de problème mais ensuite il veut pas prendre les variables 'b' et 'c' comme dimension de ma matrice ... pourquoi ???
    Parce que ton code est n'importe quoi.
    matrice est déjà définie avant, changer les paramètres de sa définition ne va pas la rédéfinir. D'ailleurs définir la taille d'un tableau avec une variable n'est pas permis en C++98.
    Apprends les bases quand même avant de venir poser des questions.

    Enfin bref, déjà, ton truc c'est pas une matrice mais un tableau de tableaux de tableaux de int, ce qui n'est même pas en bijection avec une matrice comme l'aurait été un tableau de tableaux de int.
    Une matrice s'utiliserait d'ailleurs avec une classe spéciale et un joli operator().

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    b et c doivent être connus à la compilation, ce qui n'est pas le cas ici puisque a ne l'est pas.
    Ce code compile si on remplacepar mais ce n'est évidemment pas une solution à ton problème.
    Il faut voir du coté de l'allocation dynamique ou des std::vector de la STL(voir FAQ)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Par défaut
    ...ton truc c'est pas une matrice mais un tableau de tableaux de tableaux de int...
    (citation de loufoque)

    ne t'inquiète surtout pas, je sais bien que ma matrice est en faite un tableau de tableau de tableau d'entier (enfin de 'int' pardon) ... mais bon si t'aime pas le nom de 'matrice' que je lui aie donné et que t'as envie de chipoter sur le nom de mon tableau de tableau de tableau ... aucun problème !!! Tu as qu'à remplacer le terme de 'matrice' par 'matrice tridimentionnel' ou 'truc' comme tu l'appel si gracieusement mais sa change fondamentalement rien au problème.

    en faite encore merci pour ta réponse loufoque mais elle me sert stictement à rien et ... ne t'inquiète pas j'ai quand même quelque base et j'ai vu une fois une manière qui permet de résoudre mon problème en mettant quelque chose avant qui permettait de dire que 'a' allait être déterminer par la suite dans le programme mais je ne sais plus comment, c'est pouquoi je me permet de le poster sur ce forum.

  5. #5
    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
    Pour les tableaux à plusieurs dimensions il vaut mieux utiliser boost.multi_array.

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    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 292
    Par défaut
    Voire boost.ublas ou Blitz++ pour les calculs numériques intensifs.

    Quand aux bases ... tout le monde ne sait pas forcément que les VLA sont propres au C99. Il faut dire qu'un certain compilo en mode non pédantique laissent passer.
    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. Déclaration et initialisation d'une variable
    Par micjal dans le forum Visual C++
    Réponses: 6
    Dernier message: 23/04/2014, 18h42
  2. Initialisation d'une matrice
    Par brindacier dans le forum MATLAB
    Réponses: 3
    Dernier message: 06/03/2007, 19h03
  3. Problème d'initialisation d'une matrice ?
    Par wilval dans le forum C
    Réponses: 5
    Dernier message: 04/02/2007, 16h13
  4. [VB.Net]Déclaration et initialisation d'une variable
    Par DonF dans le forum Windows Forms
    Réponses: 6
    Dernier message: 14/11/2006, 20h05
  5. Initialisation d'une matrice carrée (malloc...)
    Par kilinette dans le forum C
    Réponses: 4
    Dernier message: 17/10/2005, 19h57

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