Représentation graphique

Fermé
poitou86 Messages postés 7 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 15 mai 2008 - 15 mai 2008 à 17:17
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 15 mai 2008 à 20:06
Bonjour,

Comment je fais pour représenter graphiquement une matrice en programant en C ???
C'est possible le code.
Merci.

1 réponse

mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806
15 mai 2008 à 20:06
Par exemple comme ceci :
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef struct matrix_t{
    unsigned nb_row;
    unsigned nb_col;
    double **values;
} matrix_t;

matrix_t *new_matrix(unsigned nb_row0,unsigned nb_col0){
    unsigned i;
    matrix_t *m = (matrix_t *)malloc(sizeof(matrix_t));
    m->nb_row = nb_row0;
    m->nb_col = nb_col0;
    m->values = (double **) calloc(sizeof(double *),nb_row0);
    for(i=0;i<nb_row0;++i){
        m->values[i] = (double *) calloc(sizeof(double),nb_col0);
    }
    return m;
}

void delete_matrix(matrix_t *m){
    unsigned i,nb_row = m->nb_row;
    for(i=0;i<nb_row;++i) free(m->values[i]);
    free(m->values);
    free(m);
}

inline void set(matrix_t *m,const unsigned row,const unsigned col,const double value){
    assert(row < m->nb_row);
    assert(col < m->nb_col);
    m->values[row][col] = value;
}

inline double get(const matrix_t *m,const unsigned row,const unsigned col){
    assert(row < m->nb_row);
    assert(col < m->nb_col);
    return m->values[row][col];
}

void write_matrix(FILE *fp,const char *format,const matrix_t *m){
    unsigned i,j,nb_row = m->nb_row,nb_col=m->nb_col;
    for(i=0;i<nb_row;++i){
        for(j=0;j<nb_col;++j){
            fprintf(fp,format,get(m,i,j));
            fprintf(fp,"\t");
        }
        fprintf(fp,"\n");
    }
}

int main(){
    const unsigned nb_row=5,nb_col=4;

    // on crée la matrice en mémoire
    matrix_t *m = new_matrix(nb_row,nb_col);

    // on initialise la matrice Mij = 10*i + j
    unsigned i,j;
    for(i=0;i<nb_row;++i){
        for(j=0;j<nb_col;++j){
            set(m,i,j,10*i+j);
        }
    }

    // on affiche le contenu de la matrice
    write_matrix(stdout,"%.3lf",m);

    // on vide la mémoire
    delete_matrix(m);

    // à décommenter sous windows
    // getchar();
    return 0;
}

ce qui donne à l'exécution :
0.000   1.000   2.000   3.000
10.000  11.000  12.000  13.000
20.000  21.000  22.000  23.000
30.000  31.000  32.000  33.000
40.000  41.000  42.000  43.000

Bonne chance
0