Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
808 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Algorithme de Dijkstra

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Algorithme de Dijkstra

n°1857327
ceegiz
Posté le 03-03-2009 à 23:22:01  profilanswer
 

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

mood
Publicité
Posté le 03-03-2009 à 23:22:01  profilanswer
 

n°1857347
Joel F
Real men use unique_ptr
Posté le 04-03-2009 à 07:30:46  profilanswer
 

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 ??

n°1857356
fluminis
Posté le 04-03-2009 à 08:33:33  profilanswer
 

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
n°1857747
ceegiz
Posté le 04-03-2009 à 22:05:49  profilanswer
 

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 ?
 

n°1857811
fluminis
Posté le 05-03-2009 à 07:53:15  profilanswer
 

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
n°1858059
ceegiz
Posté le 05-03-2009 à 16:07:53  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Algorithme de Dijkstra

 

Sujets relatifs
[Résolu] Aide en C[C] executer plusieurs boucles en meme temps
[C#] Boutons personnalisés[C] Allocation dynamique d'une grille de structure.
[RESOLU] - [C#] - NullReferenceExceptionProjet : C ou Java ? Comment modéliser avec GTK ?
problème #IND et #INF ,C++C/C++ Dossier a espace
Problèmes en C et en GTKPersistance en C#
Plus de sujets relatifs à : [C] Algorithme de Dijkstra


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR