[C] Algorithme de Dijkstra

Algorithme de Dijkstra [C] - C - Programmation

Marsh Posté le 03-03-2009 à 23:22:01    

Bonjour,
 
Je suis actuellement en 1ère année d'un DUT réseaux et télécommunications, et un mini-projet nous a été donné à chacun.  
Le mien consiste à programmer un algorithme de plus court chemin (celui utilisé par le site "Mappy" ) en C. Nous avons réussi à faire cet algorithme de manière statique c'est à dire que nous l'avons appliqué à une carte simplifiée de France.
Maintenant, il nous faut rendre ce petit "moteur" dynamique, c'est-à-dire faire en sorte que l'on puisse l'implémenter sur une carte plus détaillée par exemple ce qui nous pose problème.
Je vous demande donc s'il était possible d'avoir quelques indications de votre part afin de nous aider à parvenir à nos fins.
 
Lien vers le programme : http://www.megaupload.com/?d=K8HB98BQ

Reply

Marsh Posté le 03-03-2009 à 23:22:01   

Reply

Marsh Posté le 04-03-2009 à 07:30:46    

je comprends pas le probleme. Ton algo doit bien accéder à une structure de donéne contenant les infos de ton graphe ... Donc aprés il suffit de changer ces données ??

Reply

Marsh Posté le 04-03-2009 à 08:33:33    

Bouh diou... extrait de ton code :

Code :
  1. switch(idepart)
  2. {
  3. case 0:
  4.  main();
  5.  break;
  6. case 1:
  7.  break;
  8. case 2:
  9.  break;
  10. case 3:
  11.  break;
  12. case 4:
  13.  break;
  14. case 5:
  15.  break;
  16. case 6:
  17.  break;
  18. case 7:
  19.  break;
  20. case 8:
  21.  break;
  22. case 9:
  23.  break;
  24. case 10:
  25.  break;
  26. default:
  27.  printf("Saisie incorrecte.\n" );
  28.  getch();
  29.  menu_itineraire();
  30. }


 
tu dois pouvoir simplifier ca non ?
 
if (idepart == 0) {
  main();
} else if (idepart < 0 || idepart > 10) {
  printf("Saisie incorrecte.\n" );
  getch();
  menu_itineraire();
}
 
de plus tu definies 2 fois la structure des routes :
dans trouver_chemin et dans afficher_chemin => il faut le faire une seule fois et passer les données en arguments de tes fonctions.
 
Ce qui nous ammene au sujet :
au chargement de ton programme, tu verifies l'existence d'un fichier txt dans le meme repertoire que ton executable, et si il est present tu essayes de le charger :
 
Tu pourrais avoir un fichier du style :
Arras|-1|-1|-1|-1|-1|-1|561|185|-1|522
Bordeaux|-1|-1|-1|-1|-1|-1|334|-1|237|-1
Brest|-1|-1|-1|-1|-1|-1|298|593|-1|-1
Lyon|-1|-1|-1|-1|315|303|-1|465|-1|494
...


Message édité par fluminis le 04-03-2009 à 08:34:01

---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 04-03-2009 à 22:05:49    

Joel F : oui c'est cela. l'algo doit accéder à une structure de données puis les manipuler afin de pouvoir fonctionner. Le problème est au niveau du codage :S
 
fluminis : Tout d'abord je te remercie pour les simplifications que tu m'as donné pour le code d'autant plus que notre tuteur nous reprochait de l'avoir un peu fait en "pavé". Ensuite le fait de récupérer les données dans le répertoire source de l'exécutable est bonne cependant je me pose deux questions :  
 
Sous quelle forme pourrait être la structure contenant les données (tableau, texte, etc...) ?
Comment effectuer le codage de la récupération des données ?
 

Reply

Marsh Posté le 05-03-2009 à 07:53:15    

Lien sur les fichiers en C :
http://www-ipst.u-strasbg.fr/pat/program/tpc05.htm
 
C'est vrai qu'il y a un petit bout de temps que j'ai pas fait de C, la solution avec des "|" que je t'ai donnée n'est pas la plus simple en C.
 
Tu peux essayer les fichiers brutes :
Tu liras chaque ligne avec 15*char => la ville
puis les int
Ce qui me fait penser que la toute premiere choses a lire en debut de fichier est un int : le nombre de villes !
 
Pour la structure, afin de ne pas casser ce que tu as deja fait, tu peux garder la meme !
L'algo de dijkstra fonctionne mieux avec une matrice, donc ne change pas. Dans ton algo de recuperation des données, tu liras le nom tu le mettras dans le tableau des noms, et ensuite les int que tu mettras au fur et a mesure dans ta matrice
 


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 05-03-2009 à 16:07:53    

Merci beaucoup fluminis. Je devrais avoir tout les élements pour mener à bien mon projet.
 
Je te tiens au courant pour la suite ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed