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

Langage Java Discussion :

Graphe orienté à arêtes simples


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Par défaut Graphe orienté à arêtes simples
    Bonjour,je dois implémenter un graphe orienté à arêtes simples.
    Voici mon code:
    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
    46
    import java.lang.*;
    import java.util.*;
     
    public class graphe081209{
     
    	public static class GraphOrienteSimple {
     
     
    		public interface GraphOrienteSimple {
    			LinkedList<String> l = new LinkedList<String>();	
    			Hashtable<LinkedList<String>,int> table = new Hashtable<int,int>();
     
     
    		public void ajouterSommet( int i ){
     
    		l.add(i);
    		this.l=l;
    		}
    		public void ajouterArrete( int i, int j ){
    		table.put(i,j);
    		}
    		public void supprimerSommet( int i){		
    		l.remove(i);
    		}
    		public void supprimerArete( int i, int j){		
    		if(isEmpty(table)){
    		System.out.println("table vide");
    		}
    		if(containsKey(i)){
    			if(containsKey(j)){
    				table.remove(i,j);
    				}
    			}
    		else{
    			system.out.println("cette arete n'existe pas");
    			}	
    		}
    	}
    		public static void main (String[] args){
    		ajouterSommet(1);
    		ajouterArete(1,2);
    		supprimerSommet(2);
    		supprimerArete(1,4);
    		}
    }
    }
    Mais j'ai pas mal d'erreur,dont voici la liste,je ne comprends pas,merci pour votre aide.
    Erreur 1 que j'ai plusieur fois:
    graphe.java:14: interface methods cannot have body
    public void ajouterSommet( int i ){

    Erreur 2 que j'ai plusieur fois:
    graphe.java:43: cannot find symbol
    symbol : method ajouterSommet(int)
    location: class tp8_Exo4.GraphOrienteSimple
    ajouterSommet(1);

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Ce n'est pas très sérieux quand même le code que tu nous présentes là. Il y a des erreurs partout, même dans les noms de méthode genre "ajouterArrete" et "ajouterArete"

    Les 2 erreurs sont, pour la premiere liées à ton constructeur GraphOrienteSimple où tu as mis interface devant. Pour la deuxième où dans ton main tu essayes d'appeler les méthodes sans instancier l'objet les contenant.

    Mais à la limite, ce sont des erreurs bénignes qui quand elles seront corrigées t'en donneront d'autres. On peut en passer des posts si à chaque erreur il faut retrouver les solutions...

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Le premier problème qui saute aux yeux viens de là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	public static class GraphOrienteSimple {
     
     
    		public interface GraphOrienteSimple {
    Il faudrait que tu revoies sérieusement tes cours sur les interfaces et les classes, car déclarer une interface contenant du code à l'intérieur d'une classe du même nom n'a aucun sens.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Par défaut
    Oui je m'en suis rendu compte après avoir posté,que j'ai posté le mauvais code.
    Voici le nouveau:
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    import java.lang.Integer;
    import java.util.*;
     
     
    public class tp8_Exo4{
     
    	public static interface GraphOrienteSimple {
    		public void ajouterSommet( int i );	
    		public void ajouterArrete( int i, int j );
    		public void supprimerSommet( int i); 
    		public void supprimerArete( int i, int j);
    		public List obtenirVoisin( int i );
    	}
     
    	public static class Graph implements GraphOrienteSimple{
    		LinkedList<Integer> sommets;	
    		Hashtable< Integer,LinkedList<Integer> > table;
     
    		Graph(){
    			sommets = new LinkedList<Integer>();	
    			table = new Hashtable< Integer,LinkedList<Integer> >();
    		}
     
    		public void ajouterSommet( int i ){
    			sommets.add(  new Integer(i) );
    		}
    		public void ajouterArrete( int i, int j ){
    //			table.put(i,j);
    		}
    		public void supprimerSommet( int i){		
    			sommets.remove( new  Integer(i) );
    		}
    		public void supprimerArete( int i, int j){
    		/*
    			if(isEmpty(table)){
    				System.out.println("table vide");
    			}
    			if( table.containsKey(i)){
    				if( table.containsKey(j) ){
    					table.remove(i,j);
    				}
    				}else{
    				System.out.println("cette arete n'existe pas");
    			}
    			*/	
    		}
    		public List obtenirVoisin( int i ){
    			return new LinkedList();		
    		}
    	}
     
    	public static void main (String[] args){
    		GraphOrienteSimple g = new Graph();
    		g.ajouterSommet(1);
    		g.ajouterSommet(2);
    Je bloque sur le ajouterArrete et le supprimerArrete

  5. #5
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Ok, c'est déjà mieux effectivement comme code.

    Pour un ajout, on peut imaginer le code suivant
    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
     
            public void ajouterArrete(int i, int j) {
                if ( sommets.contains(i) && sommets.contains(j) ) {
                    LinkedList<Integer> listSommet = (table.get(i) == null) ? new LinkedList<Integer>()
                                    : table.get(i);
                    if ( listSommet.contains(j) ) {
                        System.out.println("L'arrete existent deja!");
                    } else {
                        listSommet.add(j);
                    }
                    table.put(i, listSommet);
                } else {
                    System.out.println("Au moins un des sommets n existent pas!");
                }
            }
    La suppression... A toi de la faire, c'est pas sorcier quand même

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2007
    Messages : 71
    Par défaut
    bonsoir
    je te conseille d'utilité l'API GraphStream,comme ça tu peut implémenter tous le algorithmes de la théorie des graphe, tu doit seulement lire la documentation officiel de l' API
    bon courage

Discussions similaires

  1. Graphe orienté simple
    Par selver057 dans le forum Général Python
    Réponses: 2
    Dernier message: 25/09/2011, 19h01
  2. graphe orienté : parcours de tous les noeuds
    Par Lily_ dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 03/10/2007, 11h48
  3. Application graphes orientés
    Par cashp dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 03/04/2007, 17h43
  4. Graphe orienté : chemin de longueur k ?
    Par bugmenot dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 15/12/2005, 17h07
  5. [Images] graphes orientés
    Par Atchoum_002 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 25/10/2005, 16h47

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