4 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
12 déc. 2005 à 20:22
12 déc. 2005 à 20:22
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
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
12 déc. 2005 à 01:06
12 déc. 2005 à 01:06
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.
LMD_MIAS
Messages postés
46
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
21 décembre 2008
5
29 juin 2007 à 04:08
29 juin 2007 à 04:08
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
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
29 juin 2007 à 11:28
29 juin 2007 à 11:28
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
26 déc. 2011 à 16:13
26 déc. 2011 à 16:13