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 :

Type de donnée abstrait : matrice


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Type de donnée abstrait : matrice
    Bonjour,

    Dans le cadre d'un projet de programmation en langage C, je dois définir le type de donnée abstrait "Matrix" pour pouvoir manipuler des matrices chainées. Voici le schéma d'une matrice 2*2 :



    Voici ma déclaration du type :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    typedef struct cellElem
    {
    int row;
    int col;
    float value;
    struct cellElem* nextCol;
    struct cellElem* nextRow;
    }cellElement;
     
    typedef struct colElem
    {
    int colN;
    struct colElem* nextCol;
    struct colElem* prevCol;
    cellElement* col;
    }colElement;
     
    typedef struct rowElem
    {
    int rowN;
    struct rowElem* nextRow;
    struct rowElem* prevRow;
    cellElement* row;
    }rowElement;
     
    typedef struct 
    {
            int col;
            int row;
            colElement* cols;
            rowElement* rows;
            }matrix;
     
    typedef matrix* Matrix;
    Le problème c'est que je n'arrive même pas à accéder à la valeur d'une case de la matrice ("value" dans la structure "cellElement").

    Si par exemple je fais ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(int argc, char* argv[]) 
    {
         Matrix M;
         M=(Matrix)malloc(sizeof(matrix));
         M->cols->col->value=5.;
         printf("%f", M->cols->col->value);
         system("PAUSE");
     
    }
    ...le programme compile mais plante à l'exécution. Je dois donc avoir une erreur dans la déclaration du type ou dans le main. Je précise que je suis débutant.

    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Il faut que tu alloues chaque champ de tes structures pour pouvoir y accéder. Ensuite il ne faut pas oublier de libérer ta mémoire
    Et n'oublie pas le return dans ton main

    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
    int main(int argc, char* argv[]) 
    {
    	Matrix M;
    	M = malloc(sizeof(matrix));
    	M->cols = malloc(sizeof(colElement));
    	M->cols->col = malloc(sizeof(cellElement));
     
    	M->cols->col->value=5.;
    	printf("%f", M->cols->col->value);
     
    	free(M->cols->col);
    	free(M->cols);
    	free(M);
    	return 0;
    }
    Plus tu pédales moins fort, moins t'avances plus vite.

Discussions similaires

  1. type de donnée abstrait
    Par poussy dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 02/05/2005, 21h29
  2. Type pour données de type email avec @
    Par jeff37 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/01/2004, 14h50
  3. Types de données interbase
    Par Clotilde dans le forum InterBase
    Réponses: 2
    Dernier message: 18/11/2003, 14h10
  4. Réponses: 2
    Dernier message: 22/09/2003, 11h23
  5. Convertir un type de donnée sous SQL Server
    Par Fleep dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/08/2003, 15h15

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