IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Trouver le plus petit chemin d'un graphe


Sujet :

C

  1. #1
    Nouveau membre du Club Avatar de bj303931
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 75
    Points : 27
    Points
    27
    Par défaut Trouver le plus petit chemin d'un graphe
    Bonjour, je cherche le plus petit chemin mais la fonction ne renvoie rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #include <stdio.h>
     
    void CourtChemin(int graphe[][1], int n, int depart, 
    int 
    arrive){
     
    	int i;
    	int j;
    	int k;
    	int l;
    	int chemin[n];
    	int solution[n];
    	int singleton=0;	
    	int petit=n;
     
    for(j=0; j<3*n; j++){
     
    while(depart  = ! arrive){
     
    if(graphe[i][0]==depart){  //On regarde si le premier element du sous tableau est ce qu'on cherche. :D
                chemin[singleton]=graphe[i][1]; 
                 singleton++; //Case suivante
                depart=graphe[i][1]; //On cherche ce nouveau numero pour continuer le chemin.
                graphe[i][0]=0; graphe[i][1]=0;} //On enlève ce chemin pour pas le trouver 2 fois. :aie:
     
    if(graphe[i][1]==depart){ //Regardons le second element du sous tableau
    chemin[singleton]=graphe[i][0]; 
    singleton++; depart=graphe[i][0]; graphe[i][0]=0; graphe[i][1]=0;}
    i++;
    			  }
    if(singleton<petit){petit=singleton; for(k=0; k<singleton; 
    k++){solution[k]=chemin[k];}} //Si le chemin trouvé est plus petit qu'un autre, nous remlaçons le précédent par celui-ci.
    			}
     
    for(l=0; l<petit; l++){printf("%d ", solution[l]);} //Affichons
     
    	}		
     
    int main(){
     
    int
    graphe[7][2]={{1,2},{1,5},{2,5},{2,3},{3,4},{4,5},{4,6}};
    CourtChemin(graphe[7][1], 7, 1, 6);
     
    return 0;}

  2. #2
    Membre averti Avatar de Neolex
    Homme Profil pro
    Recherche emploi Securité informatique
    Inscrit en
    Avril 2011
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Recherche emploi Securité informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 243
    Points : 333
    Points
    333
    Par défaut
    une fonction void ne renvoi rien c'est normal non ?

  3. #3
    Membre averti Avatar de yetimothee
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Pour moi t'as juste pas le niveau, ton code n'est ni fait ni à faire (je ne te dis pas ça pour te blesser, mais c'est un fait).
    Essaye plus simple, de comprendre la notion d'adresse, parce que là ça te manque complètement. Second point important, apporte du soin à ton programme, soigne l'indentation, la consistance de l'ensemble. N'hésite pas à utiliser des structures pour représenter ton graphe, c'est essentiel de travailler avec des "objets" (des structures) au hasard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    typedef int node_t;
     
    struct edge {
        node_t a;
        node_t b;
    };
     
    #define GRAPH_MAX_EDGES    256
     
    struct graph {
        int         nedges;                  /* Number of edgss the graph contains */
        struct edge edges[GRAPH_MAX_EDGES];
    };
    Bref, demain j’essaierais d'être un peu plus clair sur ce qui ne va pas, et comment tu pourrais faire pour mener à bien ton petit projet !


    (et je note que dans l'éditeur de texte de ce forum la police (par défaut ?) n'est pas monospace, hum, pas terrible ça...)

    Citation Envoyé par Neolex Voir le message
    une fonction void ne renvoi rien c'est normal non ?
    Grotesque, on est en C, une fonction "void" comme tu dis peut avoir des paramètres de sortie, en plus de pouvoir avoir des effets de bords. Bref, on fait pas du fonctionnel ici...

Discussions similaires

  1. Calcul de plus court chemin dans un graphe
    Par Elmilouse dans le forum Prolog
    Réponses: 6
    Dernier message: 21/03/2010, 20h26
  2. trouver le plus court chemin dans un graphe
    Par buggen25 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 15/08/2008, 17h34
  3. Réponses: 1
    Dernier message: 23/04/2007, 10h11
  4. Trouver le plus petit nombre
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 22/10/2006, 09h36
  5. N plus courts chemin dans un graphe
    Par MLK jr dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 13/03/2006, 00h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo