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 :

Recuperer des données dans un fichier texte partie par partie


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Recuperer des données dans un fichier texte partie par partie
    Bonjour à tous

    Comme indiqué dans le titre, je souhaite réaliser un programme en langage C capable d'ouvrir un fichier texte dont le nom est saisis au clavier par l'utilisateur, de récupérer des valeurs et de les placer dans 4 tableaux différents. Jusque là j'ai réussi sans trop trop de soucis.

    En revanche, une fois que mes données sont stockées dans mes tableaux, je souhaite effectuer quelques opérations avec. En effet, je désire déterminer les valeurs max pour chaque tableaux et effectuer un calcul pour déterminer une valeur RMS. Le calcul n'est pas bien compliqué, la formule étant : RMS = racine(somme des termes d'une suite au carré)/nombre de termes.
    Le vrai soucis que j'ai à ce stade c'est que je souhaite réaliser ces traitements non pas d'un bloc, mais partie par partie. Je voudrais que mon programme me détermine la valeur max de mes tableau toutes les 3 lignes et qu'il me calcul ma valeur RMS tous les 3 termes (toutes les 3 lignes donc) de mes tableaux.

    J'arrive par la suite à écrire ces valeurs max et RMS dans deux fichiers .txt bien distincts, mais les valeurs qu'il me donne ne collent pas du tout. Je lui demande pour le moment de m'effectuer ces opérations pour les 3 premières lignes seulement.
    Si quelqun a une idée pouvant m'aider à traiter les données de mes tableaux toutes les 3 lignes, ça m'aiderait vraiment beacoup

    Le programme que j'ai, pour le moment, réalisé étant le 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
    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <windows.h>
    #include <math.h>
     
    int main(int argc, char *argv[])
    {
        FILE* fichier1 = NULL;
        FILE* fichier2 = NULL;
        FILE* fichier3 = NULL;     
        char nom_fichier[100]; 
        float temps[5000], voie1[5000], voie2[5000], voie3[5000], max1[5000], max2[5000], max3[5000], rms1[5000], rms2[5000], rms3[5000];    
        float MAX1 = 0, MAX2 = 0, MAX3 = 0, somme1 = 0, somme2 = 0, somme3 = 0; 
        double RMS1 = 0, RMS2 = 0, RMS3 = 0;
        int i = 0;   
     
        printf("Saisir le nom du fichier a ouvrir\n\n");
        scanf("%s",nom_fichier); 
     
        fichier1 = fopen(nom_fichier, "r");      
        if (fichier1 == NULL) 
        {
                     printf("Erreur lors de l'ouverture du fichier\n");
        }
        else 
        {         
            while (fscanf(fichier1, "%f %f %f %f", &temps[i], &voie1[i], &voie2[i], &voie3[i]) != EOF) 
            {       
                printf("%f %f %f %f\n", temps[i], voie1[i], voie2[i], voie3[i]);      
            }    
     
                for (i = 0; i < 2; i++)
                {
                 if(voie1[i] > MAX1)                  
                 MAX1 = voie1[i];             
     
                 if(voie2[i] > MAX2)             
                 MAX2 = voie2[i];             
     
                 if(voie3[i] > MAX3)             
                 MAX3 = voie3[i];                      
                }   
     
        max1[i] = MAX1;
        max2[i] = MAX2;
        max3[i] = MAX3;                    
     
        fichier2 = fopen("max.txt", "a+");  
        if (fichier2 != NULL)
        {       
     
                for (i = 0; i < 2; i++)
                {   
                    fprintf(fichier2,"%f %f %f\n", max1[i], max2[i], max3[i]);       
                    fclose(fichier2); 
                }
        }     
     
          for(i = 0; i < 2; i++)
            {      
                    somme1 = somme1 + (voie1[i]*voie1[i]);
                    somme2 = somme2 + (voie2[i]*voie2[i]);
                    somme3 = somme3 + (voie3[i]*voie3[i]);              
            }
     
          RMS1 = (sqrt(somme1)/3);
          RMS2 = (sqrt(somme2)/3);
          RMS3 = (sqrt(somme3)/3); 
     
          rms1[i] = RMS1;
          rms2[i] = RMS2;
          rms3[i] = RMS3;      
     
          somme1 = 0;
          somme2 = 0;
          somme3 = 0;
     
        fichier3 = fopen("rms.txt", "a+"); 
        if (fichier3 != NULL)
        {        
                 for (i = 0; i < 2; i++)
                 {     
                 fprintf(fichier3,"%f %f %f\n", rms1[i], rms2[i], rms3[i]);       
                 fclose(fichier3); 
                 }
        }
     
        fclose(fichier1); 
        }
     
        system("PAUSE");
        return 0;
     
    }
    Merci d'avance!

  2. #2
    Membre habitué Avatar de maleaume
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 93
    Points : 131
    Points
    131
    Par défaut
    un soucis dans ton code avec la variable i qui ne s incremente pas dans ton while
    et donc tu ne remplis que temps[0], voie1[0], voie2[0], voie3[0]

    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
      int i = 0;   
        
        printf("Saisir le nom du fichier a ouvrir\n\n");
        scanf("%s",nom_fichier); 
     
        fichier1 = fopen(nom_fichier, "r");      
        if (fichier1 == NULL) 
        {
                     printf("Erreur lors de l'ouverture du fichier\n");
        }
        else 
        {         
            while (fscanf(fichier1, "%f %f %f %f", &temps[i], &voie1[i], &voie2[i], &voie3[i]) != EOF) 
            {       
                printf("%f %f %f %f\n", temps[i], voie1[i], voie2[i], voie3[i]);  
              //Ici i reste toujours a 0    
              //je rajouterai ceci:
              i++;
            }    
              
    
                for (i = 0; i < 2; i++)
                {
                 if(voie1[i] > MAX1)                  
                 MAX1 = voie1[i];             
                    
                 if(voie2[i] > MAX2)             
                 MAX2 = voie2[i];             
                    
                 if(voie3[i] > MAX3)             
                 MAX3 = voie3[i];                      
                }   
                
        max1[i] = MAX1;
        max2[i] = MAX2;
        max3[i] = MAX3;

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Effectivement j'avais déjà pensé à le mettre mais quand je lançais le programme sans cette incrémentation, l'affichage était bon. J'entend par là que mes tableaux se remplisse convenablement par rapport au fichier .txt que j'ouvre.

    Le vrai soucis est que je n'arrive pas à travailler les données de mes tableaux bloc de lignes par bloc de lignes.

  4. #4
    Membre habitué Avatar de maleaume
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 93
    Points : 131
    Points
    131
    Par défaut
    Citation Envoyé par BES_63 Voir le message
    J'entend par là que mes tableaux se remplisse convenablement par rapport au fichier .txt que j'ouvre.
    FAUX

    ton affichage sera bon, mais pas tes données....
    tu ne travailles que sur le premier element de chacun de tes tableaux
    en gros a la sortie de ta boucle while tu as ceci dans voie1

    12-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0

    mais ton affichage t aura bien afficher toutes les valeurs. ce n est pas parceque tu affiches que tu sauvegardes ce que tu as lu au bon endroit.
    Pour t en convaincre ecrit ceci une fois ta boucle while terminé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int i = 0; i < 2; i++)
        printf("%f %f %f %f\n", temps[i], voie1[i], voie2[i], voie3[i]);
    je pense que tu vas comprendre ton erreur

  5. #5
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    Bonjour,

    Voici quelques corrections, ainsi qu'une proposition de traitement par lot de 3 lignes. A toi de faire la suite
    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <windows.h>
    #include <math.h>
     
    int main(int argc, char *argv[])
    {
        FILE* fichier1 = NULL;
        FILE* fichier2 = NULL;
        FILE* fichier3 = NULL;
     
        char nom_fichier[100];
     
        float temps[5000], 
              voie1[5000], voie2[5000], voie3[5000], 
               max1[5000],  max2[5000],  max3[5000],
               rms1[5000],  rms2[5000],  rms3[5000] ;
     
        float MAX1 = 0, MAX2 = 0, MAX3 = 0,
              somme1 = 0, somme2 = 0, somme3 = 0;
     
        double RMS1 = 0, RMS2 = 0, RMS3 = 0;
     
        int i = 0, ret = 0, nbEnreg = 0, nbEnregMax = 0 ;
     
        printf("Saisir le nom du fichier a ouvrir\n\n");
        scanf("%s",nom_fichier);
     
        fichier1 = fopen(nom_fichier, "r");
        if (fichier1 == NULL)
        {
            printf("Erreur lors de l'ouverture du fichier\n");
        }
        else
        {
            while ((ret=fscanf(fichier1, "%f %f %f %f", &temps[i], &voie1[i], &voie2[i], &voie3[i])) != EOF)
            {
                // Tester qu'il y a bien eu 4 valeurs lues
                if(ret==4)
                {
                    printf("%f %f %f %f\n", temps[i], voie1[i], voie2[i], voie3[i]);
                    i++ ; // Comme l'a dit maleaume
                }
     
                /*
                   Nota : Si tu as plus de 5000 enregistrements
                   tu vas avoir un beau débordement de tableaux
                   qui va peut-être déclencher un segment fault.
                 */
                if(i>=5000)
                    break ;     // On casse la boucle while avant le débordement de tableaux.
            }
     
            // Il faut sauver le nombre d'enregistrements total
            nbEnreg = i ;
     
            // Ici tu peux fermer ton fichier
            fclose(fichier1) ;
     
            // Sur tous les enregistrements
            for (i = 0; i < nbEnreg; i++)
            {
                if(voie1[i] > MAX1) MAX1 = voie1[i];
                if(voie2[i] > MAX2) MAX2 = voie2[i];
                if(voie3[i] > MAX3) MAX3 = voie3[i];
                // Toutes les 3 lignes, enregistrement des max
                if((i%3)==2) {
                    max1[i/3] = MAX1 ;
                    max2[i/3] = MAX2 ;
                    max3[i/3] = MAX3 ;
                    nbEnregMax++ ;
                }
            }
            // Si pas modulo 3 lignes, enregistrement des derniers max
            if((i%3)!=2) {
                max1[i/3] = MAX1 ;
                max2[i/3] = MAX2 ;
                max3[i/3] = MAX3 ;
                nbEnregMax++ ;
            }
     
            fichier2 = fopen("max.txt", "a+");
            if (fichier2 != NULL)
            {
                // Pourquoi 2 ? (voir problème plus haut)
                for (i = 0; i < nbEnregMax; i++)
                {   
                    fprintf(fichier2,"%f %f %f\n", max1[i], max2[i], max3[i]);       
                    // NON - Trop tôt
                    // fclose(fichier2); 
                }
            }     
            // Ici serait mieu
            fclose(fichier2);
     
            /*
               Maintenant à toi de jouer .... ;o)
             */
     
            // Sur tous les enregistrements lus
            for(i = 0; i < nbEnreg; i++)
            {
                somme1 += voie1[i] * voie1[i];
                somme2 += voie2[i] * voie2[i];
                somme3 += voie3[i] * voie3[i];
            }
     
            RMS1 = (sqrt(somme1)/3);
            RMS2 = (sqrt(somme2)/3);
            RMS3 = (sqrt(somme3)/3); 
     
            // Ici la variable "i" n'est plus initialisée
            // Même problème que pour max1/2/3
            rms1[i] = RMS1;
            rms2[i] = RMS2;
            rms3[i] = RMS3;
     
            // Pourquoi faire ? Ca sert à rien ici
            // somme1 = 0;
            // somme2 = 0;
            // somme3 = 0;
     
            fichier3 = fopen("rms.txt", "a+");
            if (fichier3 != NULL)
            {
                // Pourquoi 2 ? (voir problème plus haut)
                for (i = 0; i < 2; i++)
                {
                    fprintf(fichier3,"%f %f %f\n", rms1[i], rms2[i], rms3[i]);
                    // NON - Trop tôt
                    // fclose(fichier3);
                }
                // Ici c'est mieu
                fclose(fichier3);
            }
        }
        system("PAUSE");
        return 0;
    }

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Merci à vous deux pour vos réponses qui m'ont beaucoup aidé.

    Elijha, tu as raison, mon soucis est que les enregistrements que j'effectue dépasse, et de loin, les 5000 de mes tableaux. En fait je traite un enregistrement de 1h découpé en bloc de 2s. Chaque bloc ayant 2048 valeurs.

    Je suis donc parti sur une autre méthode qui fonctionne :
    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <windows.h>
    #include <math.h>
     
    int main(int argc, char *argv[])
    {
        FILE* fichier1 = NULL; // Delcaration d'un pointeur de type FILE pour le fichier 1
        FILE* fichier2 = NULL; // Delcaration d'un pointeur de type FILE pour le fichier 2
        FILE* fichier3 = NULL; // Delcaration d'un pointeur de type FILE pour le fichier 3  
        char nom_fichier[100]; // Chaine de craractères correspondant au nom du fichier
        float temps[5000]; //Tableau permettant de récuperer les données pour le temps
        float voie1[5000]; //Tableau permettant de récuperer les données pour la voie 1
        float voie2[5000]; //Tableau permettant de récuperer les données pour la voie 2
        float voie3[5000]; //Tableau permettant de récuperer les données pour la voie 3
        float MAX1 = 0, MAX2 = 0, MAX3 = 0, somme1 = 0, somme2 = 0, somme3 = 0; // Declarations des variables
        int i = 0;
        double RMS1 = 0, RMS2 = 0, RMS3 = 0;   
     
        printf("Saisir le nom du fichier a ouvrir\n\n");
        scanf("%s",nom_fichier); // Saisie du nom du fichier au clavier  
     
        fichier1 = fopen(nom_fichier, "r"); //fonction ouvrir avec mode d'ouverture "r" (lecture seulement)    
     
        if (fichier1 == NULL) //si il n'y a pas de lecture de fichier ou que la lecture est finie, on renvoie NULL
        {
                     printf("Erreur lors de l'ouverture du fichier\n");
        }
        else 
        {   
                while(!feof(fichier1))
                {      
                for (i = 0; i < 2048; i++)
                {
                fscanf(fichier1, "%f %f %f %f", &temps[i], &voie1[i], &voie2[i], &voie3[i]); // Récupération des valeurs contenues dans le fichier et stockage de ces dernières dans le tableau temps[]             
                //printf("%f %f %f %f\n", temps[i], voie1[i], voie2[i], voie3[i]); //Affichage des données contenu dans les tableaux temps, voie 1, 2 et 3      
                }
     
                for (i = 0; i < 2048; i++)
                {
                 if(voie1[i] > MAX1)                  
                 MAX1 = voie1[i];             
     
                 if(voie2[i] > MAX2)             
                 MAX2 = voie2[i];             
     
                 if(voie3[i] > MAX3)             
                 MAX3 = voie3[i];                   
                }          
     
         fichier2 = fopen("max.txt", "a+"); // ouvre le fichier en mode r+ (lecture et ecriture)
     
        if (fichier2 != NULL)
        {         
                    fprintf(fichier2,"%f %f %f\n", MAX1, MAX2, MAX3); // Ecriture des tableaux max dans le fichier       
                    fclose(fichier2); // Fermeture du fichier 2
        }     
     
          for(i = 0; i < 2048; i++)
            {      
                    somme1 = somme1 + (voie1[i]*voie1[i]);
                    somme2 = somme2 + (voie2[i]*voie2[i]);
                    somme3 = somme3 + (voie3[i]*voie3[i]);       
     
            }      
     
          RMS1 = (sqrt(somme1)/3);// Ici on a 3 mais il faudra remplacer 3 par le nombre de valeur d'un bloc, soit "b"
          RMS2 = (sqrt(somme2)/3);
          RMS3 = (sqrt(somme3)/3);
     
          somme1 = 0;
          somme2 = 0;
          somme3 = 0;
          MAX1 = 0;
          MAX2 = 0;
          MAX3 = 0;
     
        fichier3 = fopen("rms.txt", "a+"); // ouvre le fichier en mode r+ (lecture et ecriture)
     
        if (fichier3 != NULL)
        {          
                fprintf(fichier3,"%f %f %f\n", RMS1, RMS2, RMS3); // Ecriture des valeurs RMS dans le fichier      
                fclose(fichier3); // Fermeture du fichier 3
        }
        }
        fclose(fichier1); // Fermeture du fichier
        }
     
        system("PAUSE"); // Fais patienter le système (demande d'appuier sur une touche pour se fermer)
        return 0;
     
    }

    Néanmoins je vais m'inspirer de ton code qui gère des éventuelles erreurs, alors que le miens non ^^. Je me demande aussi si remettre mes variables somme et MAX à 0 est vraiment utile également.

    En tous cas, un grand merci à vous deux car ça m'a vraiment aidé à comprendre le raisonnement.

  7. #7
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    Bonjour,

    Citation Envoyé par BES_63 Voir le message
    Merci à vous deux pour vos réponses qui m'ont beaucoup aidé.
    Mais de rien
    Citation Envoyé par BES_63 Voir le message
    ...code qui gère des éventuelles erreurs, alors que le miens non
    Je te le conseil fortement
    Citation Envoyé par BES_63 Voir le message
    Je me demande aussi si remettre mes variables somme et MAX à 0 est vraiment utile également.
    Non, tu n'as pas besoin de les remettre à 0 SI tu ne les utilises pas après.

    Bonne journée (et n'oublie pas le bouton )

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

Discussions similaires

  1. Extraction des données dans un fichier texte brut
    Par Patrice.peace dans le forum Langage
    Réponses: 10
    Dernier message: 16/03/2010, 10h40
  2. Formater correctement des données dans un fichier texte
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 15/08/2007, 23h44
  3. [vb6]:Ajuster des données dans un fichier text avec un timer
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 25
    Dernier message: 28/07/2006, 13h13
  4. Réponses: 2
    Dernier message: 16/01/2006, 20h34
  5. Réponses: 3
    Dernier message: 22/02/2004, 21h09

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