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 à 11:54:02

Tu vas rire Mathrim quand tu parlais de Vrai langage... JE me suis mis a le programmer en QB !
Ca permet que si qqn n´a pas VB il pourra le faire tourner quand même. ( j´en ferais peut-être juste une compilation sous VB)

Ca faisait au moins 4 ou 5 ans que j´y avais plus touché. Ca m´as permis de découvrir entre autre que QB gère les type définie pas l´utilisateur.

Pour l´instant, le programme especte la norme JV 8264104 ( le numéro du topic) tel que défini dans ton fichier.
Mais le fichier ne définit pas la ville de départ et celle d´arrivée. Est ce qu´on assume qu´il s´agit de celles portant le numéro 0 ( pour le départ) et de la dernière ( pour l´arrivée) ou alors il faut demander à l´utilisateur d´entrer le numéro de la ville de départ et celle d´arrivée ?

viki6kornman
viki6kornman
Niveau 10
28 avril 2004 à 11:58:39

Ok, ben voilà.

Mathrim
Mathrim
Niveau 8
28 avril 2004 à 12:19:03

Norme JV 8264104: :lol:

@dnob700: l´algorithme est conçu pour fonctionner quelles que soient les villes de départ et d´arrivée. Il faut donc demander à l´utilisateur d´entrer leurs numéros respectifs.

@v6k: puis-je te demander quel est l´intérêt de ton intervention ?

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 14:16:13

donc en fait, chaque ville à un numéro qui lui est attribué, et le but est que l´utilisateur entre le numéro de deux villes ( départ et destination), et on nous trouve la lettre du chemin le plus court ?

Mathrim
Mathrim
Niveau 8
28 avril 2004 à 14:25:39

Pas la lettre: la succession de ville ( ou de numéros) constituant le chemin le plus court.
Par exemple, le chemin le plus court entre Bruxelles ( 3) et Ljubljana ( 11) mesure 14 et passe par les villes d´Amsterdam, Berlin et Vienne ( les distances sont très fantaisistes :) ) .

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 14:28:36

ouais mais les lettres c´était pour donner des noms aux chemins

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 14:29:52

" - écrire la fonction permettant de remplir le graphe depuis le fichier " < = hein ?

Mathrim
Mathrim
Niveau 8
28 avril 2004 à 14:38:05

Je me suis mal exprimé.
En fait, une fois que tu as conçu ta structure ou ta classe Graphe, il faut écrire une fonction qui prend en entrée le fichier décrivant le graphe ( data1.txt) et qui crée une instance de Graphe contenant toutes les informations du fichier.

Quelque chose qui ressemblerait à ça en C:

struct Graphe { . .. };

struct Graphe * buildGraphe ( char * fichier);

ou, en C++:

classe Graphe {
public:
Graphe(const char * fichier);

. ..

};

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 14:39:18

depuis quand y´a e à class en C++ :sarcastic:
sinon je sais pas faire moi pour lire un fichier x).

Mathrim
Mathrim
Niveau 8
28 avril 2004 à 14:56:18

depuis que j´écris le code dans une petite boîte sur une page html ( et que je me fais engueuler par mon browser pour faute d´orthographe -- véridique).

La lecture des fichiers en C++ est très proche de celle des entrées clavier.

Tout d´abord, tu récupères la librairie de manipulation de fichiers et celle de lecture de chaînes:

  1. include < iostream>
  2. include < fstream>

Puis tu crées un flux de lecture de fichier ( à l´intérieur d´une de tes fonctions):

ifstream f;

Pour ouvrir le fichier:

f1.open("data1.txt");

Pour lire une ligne de fichier, dont on sait qu´elle contient un entier ( sachant que la variable a décrit un int):

f1 > > a;

Pour lire une ligne de fichier contenant deux entiers séparés par un espace ou une tabulation:

f1 > >a > > b;

Pour lire un mot ( et le mettre dans la chaîne de caractère mot, qui est un char[32] par exemple):

f1 > > mot;

Voilà, ça devrait suffire pour lire le fichier data1.txt .

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 15:00:22

ok merci :)
mais y´a plusieurs fautes dans ton code:
tu fais une instance de ifstream se nommant f et après tu utilise f1.fonction :o
bref, c´est un detail..
je comprends pas comment il procède pour recupérer des données dans un fichier, tu peux m´expliquer stp ( en gros, comment il fait pour savoir quelle ligne on lit) ?

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 15:02:32

la tabulation est considérée comme étant un espace quand on lit un fichier ?

dnob700
dnob700
Niveau 10
28 avril 2004 à 15:05:12

non, la tabulation c´est la tabulation ( code ascii 9).

Mathrim
Mathrim
Niveau 8
28 avril 2004 à 15:18:33

Conker, c´est du pseudo-code tapé pendant que je réfléchissais à la façon d´expliquer :)

En fait, une fois que tu as ouvert ton fichier, celui-ci est lu comme un flux ( comme pour les entrées clavier):
quand tu écris " f > > a; " sachant que a est un int, le programme va lire le nombre qui suit, le mettre dans a, et se placer ensuite juste après le nombre lu pour continuer à lire le fichier texte.

Au niveau des tabulations, elles sont ignorées dans ce type de lecture. Si deux nombres sont séparés par une tabulation, le fait d´écrire f > > a > > b lira le premier nombre, assignera cette valeur à a, puis ´sautera´ la tabulation pour arriver au nombre suivant et le placera dans b.
Tu n´as donc pas non plus à t´inquiéter du changement de ligne.

J´oubliais juste un détail. Par soucis de propreté, il faut terminer la lecture du fichier par f.close() ; )

Valà, j´espère que c´est plus clair :)

dnob700
dnob700
Niveau 10
28 avril 2004 à 15:26:30

Est ce que je pourrais proposer la norme JV 8264104-2 tel que défini dans le fichier http://perso.wanadoo.fr/sectionpc/sectionbasic/data2.txt

Là seul différence est que la deuxième ligne contient la ville de départ et la troisième la ville d´arrivé.

Ca permet de faire un logiciel sans interface : on passe en paramètre le fichier à ouvrir au programme et lui il écrit un autre fichier qui contient le plus court chemin.

Dites moi si vous êtes d´accord.

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 15:29:37

ok je comprends :).

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 15:31:34

mais par contre je comprends pas trop la structure du fichier data.txt :(

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 15:31:56

j´entends pas structure sa mise en place, que veut dire quoi :x

Mathrim
Mathrim
Niveau 8
28 avril 2004 à 15:45:53

La première ligne ( 13) indique que le graphe contient 13 sommets.
La seconde indique que la première ville est Londres.
La troisième indique que 4 arêtes partent de ce sommet.
La quatrième indique que l´une de ces arêtes se dirige vers la ville n° 2 ( Amsterdam) et qu´elle est de longueur 3.
La cinquième indique qu´une deuxième arête se dirige vers la ville n°3 ( Bruxelles) et qu´elle est de longueur 6.
Les deux lignes suivantes décrivent également les arêtes.
Puis c´est le tour de la seconde ville, etc...

C´est plus clair ?

_[CONKER]_
_[CONKER]_
Niveau 10
28 avril 2004 à 15:47:30

oui ok merci :)

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