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 :

Problème de comparaison


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Problème de comparaison
    Bonsoir tout le monde,

    J'ai un petit problème avec un code. Je voulais comparer deux groupes A et B , chaque groupe contient des classes et chaque classe possède des mots comme contenu. Je voulais avoir toutes les correspondances possibles :
    1 : une classe de groupe A peut correspondre à une classe de groupe B
    2 : une classe de groupe A peut correspondre à plusieurs classes de groupe B
    3 : plusieurs classes de A correspondent à une classe de B
    4 : l'inverse de 3:

    je vous donne le 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
    47
    48
    49
    50
    51
    52
    53
    54
     
    public static void  correspondanceRefSys (HashMap<String, Set<String>> G, Set<String> E ){
    		/****************** Phase de comparaison Classe / concept******************/
    	//boolean b = false;  
    		boolean LabelDansListe;  
    		Object[] [] O = new Object [2][2];  
    		Set<String>  label =null;  
    		ArrayList<Object> liste = new ArrayList<Object>();  
    		String a= "";    
    		System.out.println("                                                    ");  
    		System.out.println("******** Comparaison Classe / Concept **************");  
    		Iterator <Set<String>> i = G.values().iterator();  
     
    		//tu creer un autre compteur 
     
    		int cpt2=0; 
          while (i.hasNext()) 
    		{  
    			int cpt = 0;
     
    			label = i.next();  
    			LabelDansListe = false ;
     
    			Iterator<String> j = E.iterator();  
    			while(j.hasNext()){ 
     
    				a =  j.next();  
     
     
    				if(label.contains(a)&& LabelDansListe == false){  
    					 LabelDansListe = true;
    					cpt++; 
    					liste.add(label);
     
    				}  
     
    			}
     
    			if(cpt!=0){//trouver des correspondant dans cette référence E 
     
    				O[cpt2][0] = E;//ajoute E au tableau de sortie 
    				System.out.println(O[cpt2][0]);
    				O[cpt2][1] = liste;//ainsi que sa liste 
    				System.out.println(O[cpt2][1]);
    				cpt2++;//incrémente le compteur pour la suite 
    				System.out.println(cpt2);
     
    			}
     
    				}
     
     
     
    	}
    Mais j'ai eu une exception quand j'avais augmenter le nombre d'entrées .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    	at EvalClass.Utilitaire.correspondanceRefSys(Utilitaire.java:84)
    	at EvalClass.Utilitaire.main(Utilitaire.java:155)
    merci d'avance de m'aider .

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    Bonjour,

    Peut-on avoir les sources correspondent les lignes dans les message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    	at EvalClass.Utilitaire.correspondanceRefSys(Utilitaire.java:84)
    	at EvalClass.Utilitaire.main(Utilitaire.java:155)

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Visiblement tu as un debordement d'indice. Je dirais que l'erreur provient de ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(cpt!=0){//trouver des correspondant dans cette référence E 
     
    				O[cpt2][0] = E;//ajoute E au tableau de sortie 
    				System.out.println(O[cpt2][0]);
    				O[cpt2][1] = liste;//ainsi que sa liste 
    				System.out.println(O[cpt2][1]);
    				cpt2++;//incrémente le compteur pour la suite 
    				System.out.println(cpt2);
     
    			}
    Sachant que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[] [] O = new Object [2][2];
    Quand cpt atteint au moins deux, on aura bien une erreur

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    merci beaucoup pour vos réponses , en fait j'ai augmenté le nombre de O [2][2] à O[200][2], ça marche mais tout d'abord :

    1 - j'ai augmenté à 200 alors que je peux avoir plus de données comment faire ?

    2 - est ce que c'est une bonne idée d'utiliser les tableaux (matrice) ?

    3 - concernant l'affichage sur eclipse, puisque j'ai plusieurs données, j'ai pas pu tout voir ??!!


    Merci d'avance pour votre aide

  5. #5
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Tu peux penser à utiliser des tableaux dynamique, Arraylist par exemple, si tu ne connais pas d'avance la taille des données.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    j'ai résolu le problème mais ce qui m'étonne c'est l'affichage. Je vous donne le code corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static void  correspondanceRefSys (HashMap<String, Set<String>> G, Set<String> E ) throws IOException{
    		/****************** Phase de comparaison Classe / concept******************/
     
    		System.out.println("******** Comparaison Classe / Concept **************");  
    		similaires(E,G, 3);
    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
     
     
     public static void /*boolean*/ similaires(Set<String> C, HashMap<String, Set<String>> D, int SeuilSimilitude)
         {
     
            int CSimilarToD = 0;
     
             Iterator <Set<String>> i = D.values().iterator(); 
            Set<String>  label =null;
            boolean LabelDansListe; 
            String a="";
            ArrayList<Object> liste = new ArrayList<Object>();
            Object[][] O = new Object[50][2];
             while (i.hasNext()) 
     		{  
            	 SimilarCToDCpt = 0;
     
     			label = i.next();  
     			LabelDansListe = false ;
     
     			Iterator<String> j = C.iterator();  
     			while(j.hasNext()){ 
     
     				a =  j.next();  
     
     				if((trouve(label, a))&& LabelDansListe == false ){  
     					LabelDansListe = true;
     					SimilarCToDCpt++; 
     					liste.add(label);
     
     
     				}  
     
     			}
    	if(SimilarCToDCpt!=0){//trouver des correspondant dans cette référence E 
    				O[CSimilarToD][0] = C;
    				System.out.println(O[CSimilarToD][0]);
    				O[CSimilarToD][1] = liste;
    				System.out.println(O[CSimilarToD][1]);
    				CSimilarToD++;//incrémente le compteur pour la suite 
     
    			}
     
     		}
     
     
     
     
            	 System.out.println(CSimilarToD);
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    public static boolean trouve (Set<String> set,String a)
    	{return(set.contains(a));}
    Ce code m'affiche :
    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
     
    ******** Comparaison Classe / Concept **************
    [car, elevator car, truck, motortruck, motorcar]
    [[truck, motortruck]]
    [car, elevator car, truck, motortruck, motorcar]
    [[truck, motortruck], [car, sport car, motorcar]]
    2
     
    ******** Comparaison Classe / Concept **************
    [tape transport, airbusplane, plane, transport, airplane, aeroplane, sledge, transportation]
    [[tape transport, transport, transportation]]
    [tape transport, airbusplane, plane, transport, airplane, aeroplane, sledge, transportation]
    [[tape transport, transport, transportation], [airbusplane, plane, airplane, aeroplane]]
    [tape transport, airbusplane, plane, transport, airplane, aeroplane, sledge, transportation]
    [[tape transport, transport, transportation], [airbusplane, plane, airplane, aeroplane], [sleigh, sledge]]
    3
     
    ******** Comparaison Classe / Concept **************
    [tug]
    [[tugboat, tug]]
    1
     
    ******** Comparaison Classe / Concept **************
    [automobile vehicule, automobile]
    [[automobile vehicule, automobile, auto]]
    1
    alors que je veux qu'il m'affiche ce genre d'affichage :

    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
     
    ******** Comparaison Classe / Concept **************
    [car, elevator car, truck, motortruck, motorcar]
    [[truck, motortruck], [car, sport car, motorcar]]
    2
     
    ******** Comparaison Classe / Concept **************
    [tape transport, airbusplane, plane, transport, airplane, aeroplane, sledge, transportation]
    [[tape transport, transport, transportation], [airbusplane, plane, airplane, aeroplane], [sleigh, sledge]]
    3
     
    ******** Comparaison Classe / Concept **************
    [tug]
    [[tugboat, tug]]
    1
     
    ******** Comparaison Classe / Concept **************
    [automobile vehicule, automobile]
    [[automobile vehicule, automobile, auto]]
    1
    Autrement dit je veux ce que j'ai à la fin, je sais pas comment faire, est ce que c'est une bonne idée d'utiliser tableau ou matrice ??!!

    merci infiniment de m'aider à trouver une solution

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 432
    Points
    432
    Par défaut
    [HS]
    Tu as une trés mauvaise habitude pour écrire ton code , tu utilises des lettres seules pour les noms de tes variables et en plus en majuscule.

    Par convention en java on ne nomme jamais sa variable en commençant par une majuscule, seulement le nom des classes commence avec une majuscule.

    Et on ne nomme jamais une variable juste c,e,g ... . Peut-être que pour toi C, G,E c'est trés clair dans ta tête mais pour les autres c'est imcompréhensible.
    [/HS]

    Sinon pour ta question en principe on utilise un tableau quand on connait la taille que l'on a besoin au départ et si on est sur qu'elle ne va pas augmenter.

    Autrement on va utiliser une collection qui ajuste elle même la taille de son tableau interne.

    List : habituellement pour des listes d'objets , il peut y avoir deux fois la même instance. Elles sont ordonnées et on peut donc y accéder par leur indice dans la liste.

    Set: C'est un ensemble d'objets mais la on ne peut pas mettre deux fois la même instance dans le set. (["citron","citron","poisson"] pas possible)

    map : C'est un dictionnaire , on accède à la valeur stockée grâce à une clée. Cela permet donc d'accéder trés rapidement à la valeur recherchée.La clée est unique.

    Sinon pour ton exercice , je comprend pas du tout ce que tu veux faire donc difficile de t'aider.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 17
    Points
    17
    Par défaut résolu
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
     
     
    package EvalClass;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
     
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Hashtable;
    import java.util.Iterator;
    import java.util.Set;
     
    import java.util.List;
     
    import java.util.Map.Entry;
    import java.util.regex.Pattern;
    import java.util.regex.PatternSyntaxException;
     
     
     
    import com.hp.hpl.jena.ontology.*;
    import com.hp.hpl.jena.rdf.model.*;
    import com.hp.hpl.jena.util.*;
    import com.hp.hpl.jena.util.iterator.ExtendedIterator;
    public class Utilitaire {
     
    	static HashMap<String, Set<String>> G = new HashMap<String, Set<String>>() ;
    	static HashMap<String, Set<String>> ConeptsRef= new HashMap<String, Set<String>>() ;
    	static Set<String> ClassesSys= null;
     
    	static HashMap<String, HashMap<String, Set<String>>> H = new  HashMap<String, HashMap<String, Set<String>>> () ;
     
    	static SemanticClass sc = new SemanticClass("", null);
     
    	public static float CalculPrecisionParClasse(int similarCorrect,int sizeCSys){
    		float p = 0;
    		p = (float)similarCorrect / sizeCSys;
    		return p;
    	}
    	public static float CalculRappelParClasse(int similarCorrect,int sizeCRef){
    		float r = 0;
    		r = (float)similarCorrect / sizeCRef;
    		return r;
    	}
     
    	public static float CalculFMesureParClasse(float p, float r){
    		float fmesure = 0;
    		float a = 2 * p * r;
    		float b = p + r;
    		fmesure = a / b;
    		return fmesure;
    	}
     
    	public static HashMap <String, HashMap<Set<String>,HashMap<Set<String> , Float>>>  ConstructionMatrixChaqueSysteme (String sys, HashMap<Set<String>,HashMap<Set<String> , Float>> correspCRCS){
    		 HashMap <String, HashMap<Set<String>,HashMap<Set<String> , Float>>> matrixSys = new HashMap <String, HashMap<Set<String>,HashMap<Set<String> , Float>>>();
     
    		 matrixSys.put(sys, correspCRCS);
    		 return  matrixSys;
    	}
     
    	public static boolean trouve (Set<String> set,String a)
    	{
    		return(set.contains(a));
     
    	}
     
    	/// degré de similarité entre deux classes
     
    	 public static void similaires(Set<String> C, HashMap<String, Set<String>> D, String sys)
         {
            int CSimilarToD = 0;
            float p ;
            float r ;
            float fmesure ;
            HashMap<Set<String> , Float> coupleCRfmesure = new  HashMap<Set<String> , Float>();
            HashMap<Set<String>,HashMap<Set<String> , Float>> correspCRCS = new HashMap<Set<String>,HashMap<Set<String> , Float>>();
            HashMap <String, HashMap<Set<String>,HashMap<Set<String> , Float>>> matrixSys = new HashMap <String, HashMap<Set<String>,HashMap<Set<String> , Float>>>();
     
     
             Iterator <Set<String>> i = D.values().iterator(); 
            Set<String>  label =null;
            boolean LabelDansListe; 
            String a="";
     
            ArrayList<Object> liste = new ArrayList<Object>();
     
             while (i.hasNext()) 
     		{  
            	 int SimilarCorrect = 0;
     
     			label = i.next();  
     			LabelDansListe = false ;
     
     			Iterator<String> j = C.iterator();  
     			while(j.hasNext()){ 
     
     				a =  j.next();  
     
     				if((trouve(label, a))){  
     					LabelDansListe = true;
     					SimilarCorrect++; 
     
     
     				}  
     
     			}
     
     
    	if(SimilarCorrect!=0){//trouver des correspondant dans cette référence E 
    		p = CalculPrecisionParClasse(SimilarCorrect, C.size());
     
    		r = CalculRappelParClasse(SimilarCorrect, label.size());
     
    		fmesure = CalculFMesureParClasse(p,r);
     
    		coupleCRfmesure.put(label, fmesure);
     
    		CSimilarToD++;//incrémente le compteur pour la suite 
     
    			}
    			}
             System.out.println(C);
     
     
             System.out.println(" Contenu Hashmap CR - fmesure  : ");
             System.out.println(coupleCRfmesure.entrySet());
     
             correspCRCS.put(C, coupleCRfmesure);
             System.out.println(" Contenu Hashmap CS - CR - fmesure  : ");
     
             System.out.println(correspCRCS.entrySet());
     
    	matrixSys = ConstructionMatrixChaqueSysteme(sys, correspCRCS);
     
     		 System.out.println(" Contenu de système : " + sys);
     
     		System.out.println(matrixSys.entrySet());
     
     		System.out.println("nombre de classes correspondantes : " + CSimilarToD);
     
     
                 }
    public static void  correspondanceRefSys (HashMap<String, Set<String>> G, Set<String> E, String sys ) throws IOException{
    /****************** Phase de comparaison Classe / concept******************/
     
     
     
    		System.out.println("******** Comparaison Classe / Concept **************");  
     
    		similaires(E,G, sys);
     
     
     
    }
     
     
     
    public static void main(String[] args) throws IOException {
     
     
    		try
    		{//load les fichiers .owl et .txt d'un répertoire 
    		String path = System.getProperty("user.dir") + "\\data";	
    		String filtre = "(\\w*_\\d*)";	
     
    		String [] s = new File(path).list();	
    		for (int i=0; i<s.length;i++){
     
    			 // create an empty model
    			 OntModel model = ModelFactory.createOntologyModel();
    			 // use the FileManager to find the input file
    			 InputStream in = FileManager.get().open(path + "\\" + s[i]);
    			if (in == null) {throw new IllegalArgumentException("File: " + s[i] + " not found");}
    			G = sc.extractSemanticClass(s[i],model,in,path);
    			H.put(s[i],G);
     
    		}
     
     
    		 for (int i =0; i<s.length;i++){
    			  if (!(s[i].equals("OntoRef.owl"))){
    				  System.out.println("Le système : " + s[i]);
    				Iterator<Set<String>> j = H.get(s[i]).values().iterator();
    				while (j.hasNext()){
    				  ConeptsRef = H.get("OntoRef.owl");
     
    	correspondanceRefSys(ConeptsRef, ClassesSys, s[i]);
     
    				  }  
    			  }
    		  }
     
     
    		}
    		catch (PatternSyntaxException pse)
    		{
    		pse.printStackTrace();
    		}
    	}
     
     
    		}
    Affichage :

    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
     
    ******** Comparaison Classe / Concept **************
    [motortruck, tractor]
     Contenu Hashmap CR - fmesure  : 
    [[truck, motortruck]=0.5]
     Contenu Hashmap CS - CR - fmesure  : 
    [[motortruck, tractor]={[truck, motortruck]=0.5}]
     Contenu de système : System7.owl
    [System7.owl={[motortruck, tractor]={[truck, motortruck]=0.5}}]
    nombre de classes correspondantes : 1
    Le système : System8.owl
    ******** Comparaison Classe / Concept **************
    [truck, motortruck]
     Contenu Hashmap CR - fmesure  : 
    [[truck, motortruck]=1.0]
     Contenu Hashmap CS - CR - fmesure  : 
    [[truck, motortruck]={[truck, motortruck]=1.0}]
     Contenu de système : System8.owl
    [System8.owl={[truck, motortruck]={[truck, motortruck]=1.0}}]
    nombre de classes correspondantes : 1
    Le système : System9.owl
    ******** Comparaison Classe / Concept **************
    [car, elevator car, truck, motortruck, motorcar]
     Contenu Hashmap CR - fmesure  : 
    [[truck, motortruck]=0.5714286, [car, sport car, motorcar]=0.5]
     Contenu Hashmap CS - CR - fmesure  : 
    [[car, elevator car, truck, motortruck, motorcar]={[truck, motortruck]=0.5714286, [car, sport car, motorcar]=0.5}]
     Contenu de système : System9.owl
    [System9.owl={[car, elevator car, truck, motortruck, motorcar]={[truck, motortruck]=0.5714286, [car, sport car, motorcar]=0.5}}]
    nombre de classes correspondantes : 2

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2006, 12h39
  2. Réponses: 11
    Dernier message: 22/03/2006, 21h57
  3. problème de comparaison table dans requète.
    Par Sendo dans le forum Access
    Réponses: 8
    Dernier message: 09/03/2006, 11h10
  4. Problème de comparaison (chez lycos)
    Par Tuscelan dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 18h13
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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