4 réponses
Une matrice se caractérise par les données qu'elle contient. Sauf qu'un tableau en C, on ne connait a priori pas sa taille sauf si on la passe en paramètre, donc il faut stocker le nombre de ligne et de colonne. Les cases de données seront allouées avec une fonction pour créer la matrice (l'équivalent du constructeur en C++), et détruite par une autre (par exemple dès que ut n'auras plus besoin de la matrice) (on parle en C++ de destructeur).
Ainsi, en C ça donne :
S'il y a des lignes que tu ne comprends pas n'hésite pas à demander.
Pour les listes c'est plus simple. On manipule des maillons qui stockent des données, et un maillon suivant (en supposant qu'ils stockent des doubles, mais ça peut être une adresse sur un type générique, ie un pointeur de type void *) :
Bonne chance
Ainsi, en C ça donne :
#include <stdio.h> struct matrix{ unsigned int nb_rows; unsigned int nb_columns; double **data; }; struct matrix new_matrix(unsigned int nrows,unsigned int ncolumns){ unsigned int i; struct matrix m; m.nb_rows=nrows; m.nb_columns=ncolumns; m.data=(double **) malloc(sizeof(double *)*nrows); for(i=0;i<nrows;++i){ m.data[i]=(double *) calloc(sizeof(double),ncolumns); } return m; } void del_matrix(struct matrix m){ unsigned int i; for(i=0;i<m.nb_rows;++i){ free(m.data[i]); } free(m.data); }
S'il y a des lignes que tu ne comprends pas n'hésite pas à demander.
Pour les listes c'est plus simple. On manipule des maillons qui stockent des données, et un maillon suivant (en supposant qu'ils stockent des doubles, mais ça peut être une adresse sur un type générique, ie un pointeur de type void *) :
struct maillon{ double data; struct maillon * next; }; typedef maillon * list;
Bonne chance
Branham
super
Branham
!
Oui alors l'idée c'est qu'on n'est pas là pour faire ton projet. Donc il faut cibler un peu le problème et nous dire sur quoi tu bloques, et là on se fera un plaisir de t'aider :-)
Je sais bien mais est ce que tu pourrais m'indiquer,les champs que tu mettrais pour la sructure matrice et liste.
bonsoir a tt j'arrive pas a programmer un graphe TAD
(" l'utilisateur doit entrez les ville et les distance+calcule largeur +pranfondeur +dijskraaaaaa")
tt ça en orienter objet
(" l'utilisateur doit entrez les ville et les distance+calcule largeur +pranfondeur +dijskraaaaaa")
tt ça en orienter objet
Merci d'ouvrir un nouveau sujet. Tu peux regarder du côté de la lib boost si tu es motivé.
https://www.boost.org/doc/libs/1_72_0/libs/graph/doc/dijkstra_shortest_paths.html
La lib boost (plus précisemment la BGL) permet de construire facilement des graphes complètement génériques et ensuite d'appliquer des algorithmes de théorie des graphe dessus en particulier dijkstra. Par contre il faut être familier des template et la doc est parfois un peu légère. Pour l'installer sous debian :
Bonne chance
https://www.boost.org/doc/libs/1_72_0/libs/graph/doc/dijkstra_shortest_paths.html
La lib boost (plus précisemment la BGL) permet de construire facilement des graphes complètement génériques et ensuite d'appliquer des algorithmes de théorie des graphe dessus en particulier dijkstra. Par contre il faut être familier des template et la doc est parfois un peu légère. Pour l'installer sous debian :
aptitude install libboost-dev libboost-doc
Bonne chance