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 :

Mon programme de recherche dicho, tout une histoire..


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mouchT8
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Par défaut Mon programme de recherche dicho, tout une histoire..
    Bonjour,

    me revoila avec mon programme mortellement agaçant !

    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
    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    #include<stdlib.h>
     
     
    #define MAXMOTS 100	//nombre maximum de mots dans le dictionnaire
    #define LONGMOT 20 	//longueur en carcatere d'un mot
     
     
    //initialisation de la fonction de recherche dichotomique
    short dichotomie(char **dico,char *mot,short nb_mots){  //PB ICI !!!!!!!!!!!
     
     
    int i,j,k,trouve,indice;		//i->debut, j->fin
    int strcmp (const char *s1, const char *s2);
     
     
    i=0;
    j=nb_mots;
    trouve=0;
     
    while(i<=j && trouve == 0) {				
     
    int moy;		//moyenne de(i,j)
    moy=(i+j)/2;
    k=moy;
     
     
    if(strcmp(dico[k],mot)==0) {
    	trouve=1;
    }
    if(strcmp(dico[k],mot)>0) {
    	j=k-1;}
    else{
    	i=k+1;
    }
    }
     
     
     
    if(trouve==0){indice=0;}	//si mot n'a pas été trouvé
    if(trouve==1){indice=1;}	//si mot a été trouvé
     
    return indice;
    }
     
    //initialisation des fonction de supression des majuscules et de la ponctuation
    void sup_ponc(char *pmot){
     
    int i=0,j=0;
    char c;
     
    //Traitement
    while (pmot[i]!=NULL){
    c=pmot[i];
    if (isalpha(c)){
    pmot[j]=c;
    j++;
    }
    i++;
    }
    pmot[j]=0;
    }
     
     
    void sup_maj(char *pmot){
     
    int i=0;
    char c;
     
    //Traitement
    while (pmot[i]!=NULL){
    c=pmot[i];
    if (isupper(c))
    c=tolower(c);
    pmot[i]=c;
    i++;
    }
    pmot[i]=0;
    }
     
     
     
     
     
    //FONCTION PRINCIPALE main()
     
     
     
    int main (int argc, char **argv) {
     
    FILE * f;
     
    char mot_texte[LONGMOT];	//mot lu dans le fichier texte
    char dico[MAXMOTS][LONGMOT];
    char *pmot;
    char *fichier_texte; //nom du fichier à ouvrir et traiter
     
    void qsort (void *base, size_t nmemb, size_t size,int (*compare)(const char *, const char*));
    int strcmp (const char *s1, const char *s2);
     
    int i,j,k;
    char mot[100];
    short nb_mots;
     
     
     
    printf("Veuillez entrer le nom du fichier texte a traiter pour la recherche dichotomique svp: ");
    fgets (fichier_texte, sizeof fichier_texte, stdin); 
     
    f=fopen("dico.dat","r");
     
     
    //lecture mot par mot de tout le fichier et stockage dans un tableau en mémoire (dico)
    i=0;
    while(fgetc(f)!=EOF)
    {
    	fgets(dico[i],19,f);
    	i++;
    }
     
     
     
    fclose(f);
     
    //tri en mémoire du tableau dico
    qsort((char**)dico,nb_mots,LONGMOT,strcmp);	
     
     
    //ouverture du fichier texte en lecture
    f=fopen ("argv","r");
     
    pmot=mot;
     
    //TRAITEMENT POUR CHAQUE MOT DU TEXTE: suppression de majuscule et de ponctuation
    for (i=0; i<nb_mots;i++){
    sup_ponc(pmot);
    sup_maj(pmot);
     
    }
     
    //recherche du mot dans le tableau dico à l'aide de la fonction dichotomie
    dichotomie(dico,mot,nb_mots);  // erreur 1
     
    if (dichotomie==0){
    char rep;	//variable pourla réponse de l'utilisateur
    fprintf (f,"Le mot n'existe pas. Voulez vous l'ajouter au dictionnaire? \n");
    fscanf(f,"%s",&rep);
     
    if (rep=='oui') {
    strcpy_s(dico[i],mot);		//Ajout du mot dans le dico
    qsort ((char**) dico, nb_mots,LONGMOT, strcmp);		// Tri en mémoire, une nouvelle fois, du tableau dico
    }
    }
     
    fclose(f);
     
    f=fopen("dico.dat","a");
     
    for (i=0; i<MAXMOTS; i++) {
    fputs(dico[i],f);
    }
     
    fclose(f);
     
    }
    Avec ce code je me retrouve avec une seule erreur que voici:

    Erreur 1 error C2664: 'dichotomie'*: impossible de convertir le paramètre 1 de 'char [100][20]' en 'char **' 144

    J'ai donc remplacé ma déclaration de dichotomie par:

    short dichotomie(char dico[MAXMOTS][LONGMOT],char *mot,short nb_mots){

    mais cathastrophe je me retrouve avec 3 erreurs et 5 avertissements.

    Ais-je fais mauvaise modification? Le probleme vient-il d'ailleurs?
    Mon énoncé m'indique pourtant bien que ma déclaration de dichotomie doit se faire avec "**dico" ...

    Voici les erreurs et avertissements gagnés avec cette modification:

    ERREURS:

    Erreur 6 error LNK2019: symbole externe non résolu "void __cdecl qsort(void *,unsigned int,unsigned int,int (__cdecl*)(char const *,char const *))" (?qsort@@YAXPAXIIP6AHPBD1@Z@Z) référencé dans la fonction _main dv8.obj

    Erreur 7 error LNK2019: symbole externe non résolu _WinMain@16 référencé dans la fonction ___tmainCRTStartup MSVCRTD.lib

    Erreur 8 fatal error LNK1120: 2 externes non résolus C:\Documents and Settings\LaMoucheTouteCrad\Mes documents\Visual Studio 2005\Projects\devoir 8\Debug\devoir 8.exe


    Avertissement 1 warning C4101: 'mot_texte'*: variable locale non référencée c:\documents and settings\lamouchetoutecrad\mes documents\visual studio 2005\projects\devoir 8\devoir 8\dv8.cpp 95

    Avertissement 2 warning C4101: 'k'*: variable locale non référencée c:\documents and settings\lamouchetoutecrad\mes documents\visual studio 2005\projects\devoir 8\devoir 8\dv8.cpp 103

    Avertissement 3 warning C4101: 'j'*: variable locale non référencée c:\documents and settings\lamouchetoutecrad\mes documents\visual studio 2005\projects\devoir 8\devoir 8\dv8.cpp 103

    Avertissement 4 warning C4700: variable locale 'fichier_texte' non initialisée utilisée c:\documents and settings\lamouchetoutecrad\mes documents\visual studio 2005\projects\devoir 8\devoir 8\dv8.cpp 110

    Avertissement 5 warning C4700: variable locale 'nb_mots' non initialisée utilisée c:\documents and settings\lamouchetoutecrad\mes documents\visual studio 2005\projects\devoir 8\devoir 8\dv8.cpp 128


    Si cela peut aider quelqu'un a comprendre..

    Quelqu'un peut il m'aider??

    merci.

  2. #2
    Membre confirmé Avatar de nicodn02
    Profil pro
    Consultant .NET
    Inscrit en
    Mars 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant .NET

    Informations forums :
    Inscription : Mars 2007
    Messages : 263
    Par défaut
    tu as beaucoup de warning dans ton code
    compile avec les options -ansi -Wall

    char rep; ==> 1 CARACTERE
    rep ne peut avoir la chaine de caractere "oui"
    déclare plutot un char rep[5] et utilise le strcmp(...);
    ce dernier renvoye 0 si les deux chaines sont identiques


    dans le main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char dico[MAXMOTS][LONGMOT];
    pour les prototypes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char dico[][LONGMOT];

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char *pmot
    while (pmot[i]!=NULL)
    on revient comme au dessus, pmot[i] est UN CARACTERE, il ne peut être égal ici à NULL

    si tu veux supprimer par exemple les majuscules d'un mot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if( mot == NULL )
      return;
    i = 0;
    while(mot[i] != '\0'){ /* tant que l'on est pas a la fin du mot */
    /* on fait le test du caractere et les modifications si il y a */
    i++;
    }

  3. #3
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Bonjour,

    deja pourquoi tu redeclare les fonction strcmp et qsort au sein de tes methodes ?
    C'est pas bon ca.
    Ensuite vire les cast de tes qsort

    un truc comme ca :
    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
     
    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    #include<stdlib.h>
     
    #define MAXMOTS 100	//nombre maximum de mots dans le dictionnaire
    #define LONGMOT 20 	//longueur en carcatere d'un mot
     
    #pragma warning(disable:4996)
     
    #ifdef __cplusplus
    #error "Code C, compiler facon C++, veuillez reconfigurer le compilo"
    #endif
     
    //initialisation de la fonction de recherche dichotomique
    short dichotomie(char **dico,char *mot,short nb_mots){  //PB ICI !!!!!!!!!!!
        int i,j,k,trouve,indice;		//i->debut, j->fin
     
        i=0;
        j=nb_mots;
        trouve=0;
     
        while(i<=j && trouve == 0) {				
     
            int moy;		//moyenne de(i,j)
            moy=(i+j)/2;
            k=moy;
     
            if(strcmp(dico[k],mot)==0) {
                trouve=1;
            }
            if(strcmp(dico[k],mot)>0) {
                j=k-1;}
            else{
                i=k+1;
            }
        }
     
        if(trouve==0){indice=0;}	//si mot n'a pas été trouvé
        if(trouve==1){indice=1;}	//si mot a été trouvé
     
        return indice;
    }
     
    //initialisation des fonction de supression des majuscules et de la ponctuation
    void sup_ponc(char *pmot){
        int i=0,j=0;
        char c;
     
        //Traitement
        while (pmot[i]!=NULL){
            c=pmot[i];
            if (isalpha(c)){
                pmot[j]=c;
                j++;
            }
            i++;
        }
        pmot[j]=0;
    }
     
     
    void sup_maj(char *pmot){
     
        int i=0;
        char c;
     
        //Traitement
        while (pmot[i]!=NULL){
            c=pmot[i];
            if (isupper(c))
                c=tolower(c);
            pmot[i]=c;
            i++;
        }
        pmot[i]=0;
    }
     
    //FONCTION PRINCIPALE main()
    int main (int argc, char **argv) {
        FILE * f;
     
        char mot_texte[LONGMOT];	//mot lu dans le fichier texte
        char dico[MAXMOTS][LONGMOT];
        char *pmot;
        char *fichier_texte; //nom du fichier à ouvrir et traiter
        int i,j,k;
        char mot[100];
        short nb_mots;
     
        printf("Veuillez entrer le nom du fichier texte a traiter pour la recherche dichotomique svp: ");
        fgets (fichier_texte, sizeof fichier_texte, stdin); 
     
        f=fopen("dico.dat","r");
     
        //lecture mot par mot de tout le fichier et stockage dans un tableau en mémoire (dico)
        i=0;
        while(fgetc(f)!=EOF)
        {
            fgets(dico[i],19,f);
            i++;
        }
     
        fclose(f);
     
        //tri en mémoire du tableau dico
        qsort(dico,nb_mots,LONGMOT,&strcmp);	
     
        //ouverture du fichier texte en lecture
        f=fopen ("argv","r");
     
        pmot=mot;
     
        //TRAITEMENT POUR CHAQUE MOT DU TEXTE: suppression de majuscule et de ponctuation
        for (i=0; i<nb_mots;i++){
            sup_ponc(pmot);
            sup_maj(pmot);
        }
     
        //recherche du mot dans le tableau dico à l'aide de la fonction dichotomie
        dichotomie((char**)dico,mot,nb_mots);  // erreur 1
     
        if (dichotomie==0){
            char rep;	//variable pourla réponse de l'utilisateur
            fprintf (f,"Le mot n'existe pas. Voulez vous l'ajouter au dictionnaire? \n");
            fscanf(f,"%s",&rep);
     
            if (rep=='oui') {
                strcpy(dico[i],mot);		//Ajout du mot dans le dico
                qsort (dico, nb_mots,LONGMOT, strcmp);		// Tri en mémoire, une nouvelle fois, du tableau dico
            }
        }
     
        fclose(f);
     
        f=fopen("dico.dat","a");
     
        for (i=0; i<MAXMOTS; i++) {
            fputs(dico[i],f);
        }
     
        fclose(f);
    }
    [EDIT] et l histoire n'est finie, n'oublie pas qu'il est souhaitable d'initialiser les variables que l'on declare ET SURTOUT d'allouer de la mémoire lorsque l on declare un pointeur (notement fichier_texte, pmot aussi je crois).
    Et il serais aussi pas mal de tester le code de retour de fonction : par exemple si je rentre un fichier qui n existe pas l ouverture ne se fera pas et comme tu teste pas, la premiere instruction qui va utiliser ton "FILE* f" va planter.

    voila bo courage

  4. #4
    Membre confirmé Avatar de mouchT8
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Par défaut
    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
    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    #include<stdlib.h>
     
     
    #define MAXMOTS 100	//nombre maximum de mots dans le dictionnaire
    #define LONGMOT 20 	//longueur en carcatere d'un mot
     
     
    //initialisation de la fonction de recherche dichotomique
    short dichotomie(char dico[MAXMOTS][LONGMOT],char *mot,short nb_mots){
     
     
    int i,j,k,trouve,indice;		//i->debut, j->fin
    int strcmp (const char *s1, const char *s2);
     
     
    i=0;
    j=nb_mots;
    trouve=0;
     
    while(i<=j && trouve == 0) {				
     
    int moy;		//moyenne de(i,j)
    moy=(i+j)/2;
    k=moy;
     
     
    if(strcmp(dico[k],mot)==0) {
    	trouve=1;
    }
    if(strcmp(dico[k],mot)>0) {
    	j=k-1;}
    else{
    	i=k+1;
    }
    }
     
     
     
    if(trouve==0){indice=0;}	//si mot n'a pas été trouvé
    if(trouve==1){indice=1;}	//si mot a été trouvé
     
    return indice;
    }
     
    //initialisation des fonction de supression des majuscules et de la ponctuation
    void sup_ponc(char *pmot){
     
    int i=0,j=0;
    char c;
     
    //Traitement
    while (pmot[i]!= 0){
    c=pmot[i];
    if (isalpha(c)){
    pmot[j]=c;
    j++;
    }
    i++;
    }
    pmot[j]=0;
    }
     
     
    void sup_maj(char *pmot){
     
    int i=0;
    char c;
     
    //Traitement
    while (pmot[i]!=NULL){
    c=pmot[i];
    if (isupper(c))
    c=tolower(c);
    pmot[i]=c;
    i++;
    }
    pmot[i]=0;
    }
     
     
     
     
     
    //FONCTION PRINCIPALE main()
     
     
     
    int main (int argc, char **argv[]) {
     
    FILE * f;
     
    char mot_texte[LONGMOT];	//mot lu dans le fichier texte
    char dico[MAXMOTS][LONGMOT];
    char *pmot;
    char *fichier_texte; //nom du fichier à ouvrir et traiter
     
     
    int i,j,k;
    char mot[100];
    short nb_mots;
     
     
     
    printf("Veuillez entrer le nom du fichier texte a traiter pour la recherche dichotomique svp: ");
    fgets (fichier_texte, sizeof fichier_texte, stdin); 
     
    f=fopen("dico.dat","r");
     
     
    //lecture mot par mot de tout le fichier et stockage dans un tableau en mémoire (dico)
    i=0;
    while(fgetc(f)!=EOF)
    {
    	fgets(dico[i],19,f);
    	i++;
    }
     
     
     
    fclose(f);
     
    //tri en mémoire du tableau dico
    qsort(dico,nb_mots,LONGMOT,&strcmp);
     
    //ouverture du fichier texte en lecture
    f=fopen ("argv","r");
     
    pmot=mot;
     
    //TRAITEMENT POUR CHAQUE MOT DU TEXTE: suppression de majuscule et de ponctuation
    for (i=0; i<nb_mots;i++){
    sup_ponc(pmot);
    sup_maj(pmot);
     
    }
     
    //recherche du mot dans le tableau dico à l'aide de la fonction dichotomie
    dichotomie(dico,mot,nb_mots);
     
    if (dichotomie==0){
    char rep[5];	//variable pourla réponse de l'utilisateur
    fprintf (f,"Le mot n'existe pas. Voulez vous l'ajouter au dictionnaire? \n");
    fscanf(f,"%s",&rep);
     
    if (strcmp(rep,"oui")==0) {
    strcpy_s(dico[i],mot);		//Ajout du mot dans le dico
    qsort (dico, nb_mots,LONGMOT, strcmp);			// Tri en mémoire, une nouvelle fois, du tableau dico
    }
    }
     
    fclose(f);
     
    f=fopen("dico.dat","a");
     
    for (i=0; i<MAXMOTS; i++) {
    fputs(dico[i],f);
    }
     
    fclose(f);
     
    }
    Voila j'ai supprimé mes déclaration de strcmp et de qsort.
    J'ai également changer mes 2 qsort.
    Et remplacé mon "rep" par "rep[5]"...
    Me reste ainsi plus aucun Warning mais 2 erreurs:

    Erreur 1 error C2664: 'qsort'*: impossible de convertir le paramètre 4 de 'int (__cdecl *)(const char *,const char *)' en 'int (__cdecl *)(const void *,const void *)' ligne 126 & 150

    Donc toujours un probleme avec mes qsort.

    Si je comprend bien...

    Mes "strcmp(const char,const char)"
    doit en réalité etre "strcmp(const void, const void)" ????


  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Gao,
    Citation Envoyé par mouchT8 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    int strcmp (const char *s1, const char *s2);
    ...
    Tu prétends les avoir enlevé, il n'ont rien à faire dans ton code, bien redéfinis ou pas.

  6. #6
    Membre confirmé Avatar de mouchT8
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Par défaut
    oui oui oui oups !!!


    j'ai copier coller l'ancien code...

    Maintenant que je l'ai enlevé,
    mes 2 erreurs percistent bien entendu..

  7. #7
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    bonjour,

    enleve moi ce "&" devant l un des strcmp que tu passe qsort, et chez moi les strcpy_s prennent un parametres de plus (la taille de la chaine a copier en deuxieme parametre).

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 15/04/2011, 01h08
  2. Recherche dans toute une base oracle
    Par Kasanova75 dans le forum SQL
    Réponses: 1
    Dernier message: 27/07/2009, 12h26
  3. Réponses: 8
    Dernier message: 30/05/2008, 11h15
  4. Réponses: 2
    Dernier message: 06/04/2008, 12h18
  5. Réponses: 2
    Dernier message: 29/12/2005, 10h25

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