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 :

procedure parcours de graphe


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par défaut
    bonjour
    ou es l'erreur dans cette procedure ?
    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
    void dfsc(int s)
    {
       int visite[n];
       int m[n][n];
       int s,i;
       visite[s]=1;
    
       printf("%d",s);
    
       for(i=1;i<=n;i++)
       {
          if((m[s,i]=1)||(m[i,s])=1 )&& (visite[i]=0))
          {
             dfsc(i);
          }
       }
    }
    merci

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Les indices des tableaux en C commencent à 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int visite[10];
    for(i=1; i<=10; i++)
       visite[i]=0;
    est incorrect

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int visite[10];
    for(i=0; i<10; i++)
       visite[i]=0;
    est correct.


    Tu définies une deuxième variable s qui cache la première et n'est pas initialisée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int disc(int s)
    { 
       int visite[10];
       int s;
       visite[s]=1;
    s peut valoir 1 comme -125465789... il faut initialiser les variables avant de s'en servir.
    Mais un compilateur correctement configuré aura détecté le problème.


    PS : merci d'utiliser la balise CODE (bouton #)

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Pour compléter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          if((m[s,i]=1)||(m[i,s])=1 )&& (visite[i]=0))
    Cette ligne est fausse.

    - m est un tableau à deux dimensions. Les éléments sont accessibles par m[s][i], pas par m[s,i]

    - Si c'est une comparaison que tu veux faire, la comparaison se fait avec == pas avec un simple = qui fait une assignation.
    Tu dois avoir dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          if((m[s][i]==1)||(m[i][s])==1 )&& (visite[i]==0))
    Bien entendu, ceci ne peut pas marcher puisque les tableaux m et visite ne sont pas initialisés.
    Attention à la priorité des opérateurs || et &&. Cette ligne équivaut à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          if( (m[s][i]==1) || ( (m[i][s])==1 )&& (visite[i]==0) ) )
    - Si c'est effectivement une assignation que tu souhaites réaliser (ce que je ne crois pas), alors la ligne est équivalente à m[s][i]=1 , l'évaluation étant limitée à cette expression (qui donne VRAI pour l'ensemble de l'expression dans le if)

Discussions similaires

  1. Parcours de graphe avec circuit
    Par aurelien.tournier dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 03/11/2006, 16h06
  2. Problème algo de parcour de graphe
    Par goblin dans le forum Langage
    Réponses: 1
    Dernier message: 11/12/2005, 15h04
  3. Algorithme de parcour de graphe :(
    Par scaleo dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 03/10/2005, 10h36

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