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 :

matrice implémentée dynamiquement


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Par défaut matrice implémentée dynamiquement
    bonjour mes amis
    je veux faire le produit de deux matrices creuses implémentées dynamiquement par des listes chainées en language c je sais faire l'addition mais la multiplication est compliquée j'ai écrit ces structures de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     /*liste contient les indices de colonnes et leurs valeurs */
    typedef struct colone {int val,indc;
                                   colone *suivc;}colone;
    /*liste contient les indices des lignes et pointeurs sur colonne*/
    typedef struct ligne {int indl;
                                colone *suivc;
                                ligne *suivl;}ligne;
    typedef struct matrice {int nb_col,nb_lig;
                                     ligne *suivl;}matrice;
    merci d'avance

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Pourquoi utiliser des listes chainées pour une matrice ? Cela gène énormément le parcours et réduit le performance à cause des multiples parcours pour retrouver chaque élément.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Pourquoi utiliser des listes chainées pour une matrice ? Cela gène énormément le parcours et réduit le performance à cause des multiples parcours pour retrouver chaque élément.
    bonjour mon ami j'ai un examen et on va travailler sur les matrices creuses implémentées dynamiquement .cette methode est obligatoire .

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    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 202
    Par défaut
    Non, ca peut être dynamique via une allocation.
    L'idée serait d'avoir une interface d'indexation.

    Typiquement, pour une matrice pleine on aurait ceci:
    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
    typedef struct {
        double* values;
        unsigned int width, height;
    } double_matrix;
     
    double double_matrix_get_value_at(double_matrix m, unsigned int i, unsigned int j) {
        return m.values[i*(m->width) + j];
    }
     
    void double_matrix_set_value_at(double_matrix m, unsigned int i, unsigned int j, double value) {
        m->values[i*(m->width) + j] = value;
    }
     
    double_matrix create_double_matrix(unsigned int width, unsigned int height) {
        double_matrix m = {calloc(width*height, sizeof(double)), width, height};
        if(m.values==NULL) exit(-1);
        return m;
    }
     
    void delete_double_matrix(double_matrix m) {
        free(m.values);
    }
    Évidemment, pour une matrice creuse, le code des fonctions serait autre, mais ca ne changerait rien à l'usage.
    Mais une matrice creuse ne s'implémente pas avec une grille chainée.

Discussions similaires

  1. scroll bar et implémentation dynamique dans une gtk_vbox
    Par eric1708 dans le forum GTK+ avec C & C++
    Réponses: 11
    Dernier message: 30/09/2013, 08h05
  2. Réponses: 3
    Dernier message: 09/08/2010, 16h26
  3. Implémentation dynamique du TTimer
    Par od.dev dans le forum Composants VCL
    Réponses: 6
    Dernier message: 02/06/2010, 10h58
  4. [c#] creation de matrice en dynamique
    Par wodel dans le forum Windows Forms
    Réponses: 1
    Dernier message: 23/05/2007, 14h45

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