CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Training][C/C++] Plus courts chemins

dnob700
dnob700
Niveau 10
28 avril 2004 à 18:44:31

Et pour mon amendement ?

A savoir l´insertion entre la première et la deuxième ligne de 2 lignes pour la ville de départ et celle d´arrivée ?

Mathrim
Mathrim
Niveau 8
28 avril 2004 à 19:29:37

Désolé, je ne l´avais pas vu ( au milieu des messages de Conker :x ) .

Tout à fait d´accord pour ton amendement ; )

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 19:33:30

mais c´est pas hyper simple tout ça..
comment savoir si pour aller à telle ville depuis telle ville il faut passer par le tronçon 3 et 5 par exemple ? :/

Mathrim
Mathrim
Niveau 8
29 avril 2004 à 00:44:41

C´est justement l´intérêt de l´algorithme que j´ai indiqué au début. Bon, je rentre d´une soirée quelque peu arrosée, donc je vais éviter de rentrer dans les détails, mais l´idée de l´algorithme est la suivante: à chaque étape, sélectionner parmi les villes non examinées celle qui est la plus proche de la ville de départ. Peux-tu lire l´algorithme tel que je l´ai décrit, essayer de l´appliquer " à la main" sur le graphe simplifié que j´ai fourni
(http://mathrim.cauthon.free.fr/graphes/graphe.jpg<BR> ? Si tu ne le comprends toujours pas ( je ne suis guère doué pour les explications), je développerai peu plus.

lord_kalipsy
lord_kalipsy
Niveau 10
29 avril 2004 à 02:09:26

Comment fait-on avec fread pour lire c´est chiffre ? les nom c´est ok mais je n´arrive pas à transformer les chaine en entier... il y a t´il une autre manière que :

entier = chaine[i]; / / le i étant le chiffre corespondant ?

«psy

Mathrim
Mathrim
Niveau 8
29 avril 2004 à 08:51:46

Tu peux le faire avec atoi .

i_am_the_law
i_am_the_law
Niveau 6
29 avril 2004 à 11:37:42

C´est pas conseille d´utiliser atoi. Ca te permet pas de verifier si tu as bien converti un nombre.
Si le fichier par ex n´est pas formatte comme il faut, tu feras p-e un atoi("londres") et tu n´as aucun moyen de la savoir.
Il vaut mieux utiliser sscanf et tester que le resultat vaut 1
par ex if ( sscanf(chaine,"%d",&)!=1) erreur

Mathrim
Mathrim
Niveau 8
29 avril 2004 à 19:06:52

C´est pour la bonne cause:
:up:

viki6kornman
viki6kornman
Niveau 10
29 avril 2004 à 19:07:35

lol

dnob700
dnob700
Niveau 10
29 avril 2004 à 19:58:14

T´inquiète on ira le repéché ton topic s´il coule.

Mais là je suis en train de réinstaller windows ( après mes tribulation du forum programmation). D´où un petit retard dans l´avancement de mon projet.

Mathrim
Mathrim
Niveau 8
29 avril 2004 à 20:03:55

Merci ; )

Il n´y a de toute façon pas de question de deadline ou autre. A priori, je mettrais une solution en ligne dans une dizaine de jours ( selon l´état d´avancement des personnes intéressées), mais ça n´a rien de définitif :)

dnob700
dnob700
Niveau 10
01 mai 2004 à 01:44:53

Ca y est, j´ai fini.
Finalement, je l´ais quand même fait avec visual basic.

as tu les dll nécessaire ou les veux tu.
j´uploaderait le logiciel demain, car je n´ai pas encore réinstallé de client FTP sur mon PC.

J´ai testé mon logiciel avec ton fichier d´exemple, et pour les ville que tu donne a la page 2, il donne le même résultat.

Maintenant, il faudrait esasyer avec de très gros fichier. En as-tu ?

dnob700
dnob700
Niveau 10
01 mai 2004 à 02:13:43

http://perso.wanadoo.fr/sectionpc/sectionbasic/programmes/findpath.zip

tout est là, exécutable et source.

une explication sur l´algorithme demain si je suis autorisé à le faire par Mathrim.

Mathrim
Mathrim
Niveau 8
01 mai 2004 à 10:42:41

@dnob700: autorisation accordée ( faudrait que j´arrête de me la péter moi).
J´ai juste parcouru ton code et ça m´a l´air bon.

dnob700
dnob700
Niveau 10
01 mai 2004 à 11:13:10

donc t´as compris, malgre le basic.
c´est vrai que c´est pas très beau comme code, je me suis apercu que j´avais oublié de virer toutes mes constante de débug et autre truc inutile.

Sinon pour l´algorithme :
1-main : nefait rien sauf récuperer le nom du fichier
2-readtext : lis le fichier et mets son contenu dans la variable global villes qui possède comme membre pour chacun de ses indice le nom, la destination et la longueur des chemins.
3-printtext : ne fait rien, juste pour débuger
4-findpath : on pourrai croire que c´est là que tout ce fait mais non, findpath ne fait qu´initialiser quelque variable.

Mais il appelle explorearea et LA tout ce fait :
explorearea prend en paramètre le numéro d´une ville ( pour le premier appel, c´est la ville de départ) et va regarder toutes les ville à laquelle elle est conecté. Il regarde si le chemin le plus court qu´il conait pour cette ville est plus long que le chemin pars lequel il est venu jusqu´a cette ville. Si oui, ce chemin devient le nouveau chemin et il appelle explorearea pour cette ville.

La méthode n´est probablement pas la plus rapide, mais du point de vu du code elle est l´une des plus efficace car la fonction est récurrente et donc extremement simple pour effectuer cette tache.

5-writetext : je dois vraiment expliquer a quoi cela sert ?

voila, s´il y a d´autre question, n´hésitez pas à les poser.

dnob700
dnob700
Niveau 10
01 mai 2004 à 11:46:34

J´ai corrigé quelque bug du code, mis a jour, améliorer le présentation du code et ajouter une nouvelle fonctionnalité :

la norme JV 8264104-3 définit que la première ligne du fichier peut ( mais ne doit pas obligatoitrement) êtrer : debugmode
dans ce cas là, la deuxième doit être 1, 2 ou 3 selon le niveau de débug voulu ( explication dans le code). ATTENTION, le niveau 2 et 3 peuve ralentir l´exécution.

Mais la norme JV 8264104-3 est rétrocompatible avec JV 8264104-2 ( qui n´était pas compatible avec JV 8264104 pour mémoire).

L´archive est mise à jour à la même adresse que tout à l´heure.

dnob700
dnob700
Niveau 10
01 mai 2004 à 11:50:41

au fait Mathrim, si tu as un fichier avec un graph plus grand, je suis preneur, parce qu´il faudrait tester mon logiciel avec quelque chose de plus conséquant. La il parcourt tout le graphe en qête du meilleur chemin en moins d´un millième de seconde ( d´après les info du debug).

dnob700
dnob700
Niveau 10
01 mai 2004 à 12:13:50

En fait, je viens de m´apercevoir que j´ai fais juste l´algorithme que tu proposais ( je l´avasi mal compris) mais en un peu moins bien a cause de ma structure de donné : l´algo passe par plus de neud ( même si ce n´est pas un algorithme de force brute).

Il faudra que je corrige ca une fois.
Mais pas maintenant.

dnob700
dnob700
Niveau 10
02 mai 2004 à 18:34:08

:up:

t´es parti Mathrim ?

Mathrim
Mathrim
Niveau 8
09 mai 2004 à 17:41:49

Salut !

Je suis de retour après une petite semaine de voyage ( désolé donc de ne pas avoir répondu plus tôt).
Au niveau des fichiers de données, je n´en ai malheureusement pas de plus grand sous la main.

L´algorithme est en O(nm) où n est le nombre de sommets du graphe et m le nombre moyen d´arêtes à chaque sommet. Etant donné que le nombre d´opération sur chaque arête est très limité ( une addition, une comparaison et une assignation au maximum), il serait nécessaire d´utiliser des fichiers comprenant plusieurs milliers de ville pour commencer à observer des exécutions dépassant la seconde ( du moins en C).

Dans le cadre de jeux vidéos ( pour y revenir), on représente souvent une carte comme un graphe, où chaque noeud représente un carré de terrain, et où les arêtes représente la distance nécessaire pour passer d´un carré à un carré de terrain adjacent. On a, dans ce cas-là, un grand nombre de noeuds et les questions d´optimisation peuvent se poser.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment