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 :

[debutant] Tableau avec indexation


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut [debutant] Tableau avec indexation
    bonjour à tous !


    Je desire créer un programme qui puisse calculer la distance entre deux villes en utilisant leurs coordonnées (latitude et longitude),
    je pensai créer un system de 3 tableaux. Le 1er tableau comprendrai le nom des villes, le second l'ensemble des latitudes des villes, et le troisieme les longitudes. A l'aide d'une indexation le program trouvera de lui meme les bonnes coordonnées de la ville selectionné, et calculera la distance via une formule mathématique.

    Mes connaissance en language C++ étant très réduite, je ne sais comment créer ce type de tableau, je me demande meme si il est possible de créer de telle tableau qui puisse à la fois stocker des chaines de caractere tout en les indexant ?!


    Pouvez vous me donner quelque conseil sur la création de ces tableaux ?

    En vous remerciant
    Greg

  2. #2
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut
    Deja commence par faire un tour sur la faq c++ et regarde les differents tuoriaux C++ presents sur le site a cette adresse : http://c.developpez.com/cours/

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Voici un version avancé de mon programme...
    Le programme affiche un menu, 4 choix sont possible
    ajouter un ville, affiché toutes les villes pré-enregistré, calculé la distance entre 2 villes ou sortir...

    Néanmoins je voudrai enregistrer toutes les villes et leurs coordonnées dans un fichier, le probleme actuel étant qu'a chaque fois que je lance le comppileur, il efface le fichier deja existant... comment faire ?

    J ai aussi un pseudo "system" d'analyse de correspondance, afin de retrouver les bonnes coordonnées de la ville desiré, est il possible de faire via une simple command, la meme chose ?

    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
     
     
    #pragma hdrstop
    #pragma argsused
    #include <iostream.h>
    #include <math.h>
    #include <string.h>
    #include <fstream>
    using namespace std;
    ios::out;
    ios::app;
    double Distance(double, double, double, double);
    class Place{
      public:
    	 char name[20], name1[20];
    	 float Latitude;
    	 float Longitude;
    	 };
    int i1 = 0, j1 = 0, k1 = 0, i = 0, j = 0, k = 0, m = 0, n = 0, v = 0, h = 0, a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;
    int main()
    {
    ofstream name("C:\Documents and Settings\05072295\My Documents\Borland Studio Projects\out.dat");
    //ifstream name1("C:\Documents and Settings\05072295\My Documents\Borland Studio Projects\in.dat");
     float C,F, Lat[2], Lon[2], TDistance;
     char option, place1[20], place2[20];
     Lat[0] = 0, Lat[1] = 0, Lon[0] = 0, Lon[1] = 0;
     cout << "------**** Welcome to the World Distance Calculator ****------"<<endl<<endl;
     cout << "This program enables you to calculate the distance between any"<<endl;
     cout << "two cities in the world. Use the prompts below to navigate." << endl<<endl;
     do{
     cout << "If you would like to add a new entry >>>>>>>>>>>>>>>>>>>>>>>>>>>>> press 1"<<endl;
     cout << "If you would like to find the distance between two places >>>>>>>> press 2"<<endl;
     cout << "If you would like to display all the places in database >>>>>>>>>> press 3"<<endl;
     cout << "If you wish to exit this program >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> press 4"<<endl<<endl;
     cout << "Please enter an option number: ";
     cin >> option;
     cout << "" << endl;
     
     switch (option)
     {
    	case '1':
     
    	Place P1[10];
    		cout << "" << endl;
    		cout << "Enter Place Name: ";
    		cin >> P1[i++].name;
    		cout << "Enter Latitude Co-ordinate (in decimal degrees): ";
    		cin >> P1[j++].Latitude;
    		cout << "Enter Longitude Co-ordinate (in decimal degrees): ";
    		cin >> P1[k++].Longitude;
    				cout << "" << endl;
    		name << P1[i1++].name << P1[j1++].Latitude << P1[k1++].Longitude << endl;
    		// copy the out file into the in file
    		//strcpy(char P1.name, char*P1.name1);
     
     
    		break;
     
    	case '2':
    		cout << "" << endl;
                    cout << "Enter the The Name of the first place: ";
    				cin >> place1;
    				while ((e != 10)&&((place1[0] != P1[a].name[0])||(place1[1] != P1[b].name[1]))){
                    a++,b++,e++;
    				}
                    if (e > 9)
                    cout << "Place Not in Data Base!" << endl;
                    else
    				Lat[0] = P1[a].Latitude, Lon[0] = P1[b].Longitude ;
    				cout << " " << endl;
                    cout << "Enter the the name of the second place: ";
                    cin >> place2;
                    while ((f != 10)&&((place2[0] != P1[c].name[0])||(place2[1] != P1[d].name[1]))){
                    c++,d++,f++;
                    }
                    if (f > 9)
                    cout << "Place Not in Data Base!" << endl;
                    else
    				Lat[1] = P1[c].Latitude, Lon[1] = P1[d].Longitude;
    				cout << " " << endl;
     
    				TDistance = Distance(Lat[0],Lat[1],Lon[0],Lon[1]);
    				if (f > 9)
                    cout << "Distance could not be calculated";
                    else if (e > 9)
                    cout << "Distance could not be calculated";
                    else
                    cout << "Distance Between Place 1 And Place 2 is: " << TDistance << "Km";
                    cout << "" << endl;
                    cout << "" << endl;
                    while(e != 0 || a != 0 || b != 0){e--,a--,b--;}
                    while(f != 0 || c != 0 || d != 0){f--,c--,d--;}
    		break;
     
    	case '3':
    				cout << "Name   Latitude Longitude";
    				cout << "" << endl;
    				if (i>0)
    					 while (m < i){
    				 cout << "" << endl;
    					 //name >> P1[n++].name >>"   " >> P1[v++].Latitude >> " " >> P1[h++].Longitude;
    					 n--;
    					 cout << P1[n++].name << endl  ;
     
     
    					 m++;}
                    else cout << "No Places Stored!";
    				while (m > 0){
    				m--,n--,v--,h--;}
    				cout << "" << endl;
                    cout << "" << endl;
    		break;
     
    	default:
                    cout << "" << endl;
    		cout << "Invalid option" << endl;
                    cout << "" << endl;
    		break;
     }
    	}while (option !='4');
    name.close();
    }
     
    double Distance(double L1, double L2, double Lon1, double Lon2)
    {
    double Lat1 = L1*(M_PI/180);
    double Lat2 = L2*(M_PI/180);
    double Long1 = Lon1*(M_PI/180);
    double Long2 = Lon2*(M_PI/180);
     
    return acos(sin(Lat1)*sin(Lat2)+cos(Lat1)*cos(Lat2)*cos(Long2-Long1))*6371;
    }

    En vous remerciant !

  4. #4
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    ta compilation plante !!!!!

    marque un programme qui compile au moins :S

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    slt

    Raste à dit:
    Néanmoins je voudrai enregistrer toutes les villes et leurs coordonnées dans un fichier, le probleme actuel étant qu'a chaque fois que je lance le comppileur, il efface le fichier deja existant... comment faire ?
    Là j'avoue je suis intrigué, c'est à la compile que ton fichier est effacé ? C'est pas plutôt lors de l'exécution de ton prog qui l'efface ?


    Le travail est un privilège que les hommes se sont données pour faire reculer le monde

  6. #6
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    oui, je me suis mal exprimé, en effet c est à l'execution du programme que le fichier s efface.
    Je cherche le bug et je post un code qui marche !

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    voila enfin le code qui devrait marcher !

    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
     
    //---------------------------------------------------------------------------
     
    #pragma hdrstop
    #pragma argsused
    #include <iostream.h>
    #include <math.h>
    #include <string.h>
     using namespace std;
    double Distance(double, double, double, double);
    class Place{
      public:
         char name[20];
         float Latitude;
         float Longitude;
         };
    int i1,i2,i,j,k,m,n,v,h,a,b,c,d,e,f = 0;
    int main()
    {
     float C,F, Lat[2], Lon[2], TDistance;
     char option, place1[20], place2[20];
     Lat[0] = 0, Lat[1] = 0, Lon[0] = 0, Lon[1] = 0;
     
     cout << "------**** Welcome to the World Distance Calculator ****------"<<endl<<endl;
     cout << "This program enables you to calculate the distance between any"<<endl;
     cout << "two cities in the world. Use the prompts below to navigate." << endl<<endl;
     do{
     cout << "If you would like to add a new entry >>>>>>>>>>>>>>>>>>>>>>>>>>>>> press 1"<<endl;
     cout << "If you would like to find the distance between two places >>>>>>>> press 2"<<endl;
     cout << "If you would like to display all the places in database >>>>>>>>>> press 3"<<endl;
     cout << "If you wish to exit this program >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> press 4"<<endl<<endl;
     cout << "Please enter an option number: ";
     cin >> option;
     cout << "" << endl;
     switch (option)
     {
    	case '1':
                    Place P1[10];
    		cout << "" << endl;
    		cout << "Enter Place Name(No spaces): ";
    		cin >> P1[i++].name;
    		cout << "Enter Latitude Co-ordinate (in decimal degrees): ";
    		cin >> P1[j++].Latitude;
    		cout << "Enter Longitude Co-ordinate (in decimal degrees): ";
    		cin >> P1[k++].Longitude;
                    cout << "" << endl;
    		break;
     
    	case '2':
    		cout << "" << endl;
                    cout << "Enter the The Name of the first place(No spaces): ";
                    cin >> place1;
                    for (i1=0; place1[i1]!='\0';i1++); //(determines the length of the place)
                    while ((e != 10)&&((place1[i1] != P1[a].name[i1])||(place1[0] != P1[b].name[0]))){
                    a++,b++,e++;
                    }
                    if (e > 9)
                    cout << "Place Not in Data Base!" << endl;
                    else
                    Lat[0] = P1[a].Latitude, Lon[0] = P1[b].Longitude ;
                    cout << " " << endl;
                    cout << "Enter the the name of the second place(No spaces): ";
                    cin >> place2;
                    for (i2=0; place2[i2]!='\0';i2++);
                    while ((f != 10)&&((place2[i2] != P1[c].name[i2])||(place2[0] != P1[d].name[0]))){
                    c++,d++,f++;
                    }
                    if (f > 9)
                    cout << "Place Not in Data Base!" << endl;
                    else
                    Lat[1] = P1[c].Latitude, Lon[1] = P1[d].Longitude;
                    cout << " " << endl;
     
                    TDistance = Distance(Lat[0],Lat[1],Lon[0],Lon[1]);
                    if ((f > 9)||(e > 9))
                    cout << "Distance could not be calculated";
                    else
                    cout << "Distance Between Place 1 And Place 2 is: " << TDistance << "Km";
                    cout << "" << endl;
                    cout << "" << endl;
                    while(e != 0 || a != 0 || b != 0){e--,a--,b--;}
                    while(f != 0 || c != 0 || d != 0){f--,c--,d--;}
    		break;
     
    	case '3':
                    cout << "Name   Latitude Longitude";
    	       	cout << "" << endl;
                    if (i>0)
                         while (m < i){
    	       	     cout << "" << endl;
                         cout << P1[n++].name <<"   " << P1[v++].Latitude << " " << P1[h++].Longitude;
                         m++;}
                    else cout << "No Places Stored!";
                    while (m > 0){
                    m--,n--,v--,h--;}
                    cout << "" << endl;
                    cout << "" << endl;
    		break;
     
    	default:
                    cout << "" << endl;
    		cout << "Invalid option" << endl;
                    cout << "" << endl;
    		break;
     }
    	}while (option !='4');
    }
     
    double Distance(double L1, double L2, double Lon1, double Lon2)
    {
    double Lat1 = L1*(M_PI/180);
    double Lat2 = L2*(M_PI/180);
    double Long1 = Lon1*(M_PI/180);
    double Long2 = Lon2*(M_PI/180);
     
    return acos(sin(Lat1)*sin(Lat2)+cos(Lat1)*cos(Lat2)*cos(Long2-Long1))*6371;
    }
    //---------------------------------------------------------------------------
    toujours le soucis de la création de fichier qui efface le précédent, comment pouvoir récupéré les données dans le fichier ?

  8. #8
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    La premiere chose à faire serait peut etre de "factoriser" un tout petit peu ton code...

    Je sais pas, moi, un truc du genre de "un case, une fonction" (plus une fonction pour l'affichage du menu)

    Ensuite, fais attention au fait que, 20 villes, c'est vite atteind (envisage peut etre l'utilisation d'un std::vector ), et que les variables globales, heuu... c'est pas des plus conseillé (pour rester gentil)

    Enfin, tout à fait honnetement, meme si cela ne représente qu'un avis strictement personnel (que je partage pourtant ), j'ai horreur des "déclarations en rafales" (genre int i1,i2,i,j,k,m,n,v,h,a,b,c,d,e,f = 0

    Je préfères (cela ne prend pas beaucoup plus de temps à écrire, mais au moins on ne risque pas de louper un nom de variable )
    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
    int i1;
    int i2;
    int i;
    int j;
    int k;
    int m;
    int n;
    int v;
    int h;
    int a;
    int b;
    int c;
    int d;
    int e;
    int f = 0;
    et, tant qu'à faire, s'il y avait moyen d'avoir des noms un peu plus explicites, ce ne serait peut etre pas mal

    Je sais que le C++ a hérité du C une série de raccourcis qui peuvent sembler intéressants de prime abord, mais, le gros problème est que ces raccourcis ont, pour une grosse majorité des cas du moins, l'énorme inconvéniants de rendre la lecture, et donc la compréhension du code, beaucoup plus difficile... surtout pour les pôôôvres mecs (ou gonzesses... ne soyons pas sexiste ) qui découvrent le code et qui doivent essayer d'en découvrir la logique

    Ces quelques remarques d'ordre générale posées, je suis peut etre myro, mais, je ne vois nulle part dans ton code la moindre instruction relative à une lecture ou une écriture dans un fichier...

    Dans ce cas, comment ton fichier pourrait-il ne serait-ce qu'exister

  9. #9
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    oui c'est exacte, le code fesai planter la compilation, donc j'ai retiré cette partie !
    Sinon peux tu etre plus explicite sur les std::vector ? je ne connais pas encore cette command... surtout que on me demande de store 100 villes !

    Pour en revenir a la lecture et l'ecriture de fichier, j ai entendu parlé d'une command iostream ou quelque chose s'en rapprochant, pouvez vous me donner des infos sur cette command ?

    En vous remerciant

  10. #10
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Alors, les std::*fstream (ifstream et ofstream) et les std::vector ne sont pas des commandes, mais des classes fournies par la S(T)L(Standard (Template) Library: bibliotheque (de modèles) standard), tous disponibles dans l'espace de nommage (namespace) std (mis pour "standard"), et nécessitant l'inclusion des fichier <fstream> pour les... std::*fstream (FileStream: flux de fichier) et <vector> pour... les std::vector

    Pour ce qui est des std::vector, on peut dire sans *trop* simplifier qu'il s'agit de conteneurs qui fournissent l'ensemble des possibilités fournies par les tableau "C style" (du genre: type nom[N]), sans en présenter les inconvéniants:

    Deux de leurs avantages par rapport au tableaux C style sont qu'ils connaissent leur taille (le nombre d'éléments qu'ils contiennent), et qu'il permettent de ne pas s'inquiéter de l'allocation dynamique de la mémoire pour le maintient des éléments qu'ils contiennent.

    Par contre, tout comme les tableau C style, ils permettent un acces "aléatoire" (tab[10] fournit l'acces au 11eme élément du tableau)

    Ils fournissent également une série de fonctions qui permettent de gérer facilement, et en limitant le risque d'erreur de codage, de gérer les éléments qu'on leur donne (ajout, insertion, copie, suppression...)

    Enfin, comme pour tous les conteneurs de la STL, ils permettent d'utiliser ce que l'on appelle des itérateurs...

    La seule "particularité", c'est qu'il s'agit d'une classe "template", c'est à dire qu'il faut utiliser une synthaxe assez particulière (mais commune à toutes les classes template) pour les déclarer qui prend la forme de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<le type d'objet à contenir> montableau;
    Le nombre de méthodes qu'ils fournissent étant relativement important, je te conseille de faire un tour sur http://www.sgi.com/tech/stl/Vector.html pour avoir la documentation qui leur est attachée (désolé, le lien est en Anglais )

    En ce qui concerne les std::*fstream...

    Ce sont trois classes (iofstream, ifstream et ofstream) qui fournissent l'ensemble des fonctions permettant de gérer les fichiers...
    std::iofstream est la classe "de base", permettant de gérer les fichiers en entrée ou sortie, alors que std::ifstream permet de gérer les fichier en lecture et std::ofstream permet de les gérer en écriture.

    Ils fournissent également une série de fonctions propres à la gestion de flux sur les fichiers (en lecture ou en écriture selon qu'il s'agisse d'un ifstream ou d'un ofstream) dont, principalement, la possibilité d'utiliser << et >> pour les types de base et les chaines de caractères (std::string) tout comme tu les utiliserais pour un simple affichage ou une simple acquisition (std::cout<<"salut"; ou std::string str; std::cin>>str; )

    Là encore, le nombre de fonctions fournies et les cas d'utilisations sont à ce point nombreux qu'il vaut mieux que tu fasse une petite recherche personnelle... à commencer peut etre par la FAQ qui leur est consacrée sur ce site meme:http://c.developpez.com/faq/cpp/?page=fichiers

    Voici, en quelques mots, ce que l'on peut dire sur les deux classes (qui ne sont donc pas des commandes ) qui t'intéressent pour l'instant...

    Tu aurais grandement intérêt, en tant que débutant (et meme par la suite, d'ailleurs) à parcourrir la FAQ du site, qui regorge d'informations qui te seront utiles, que ce soit pour ce projet bien précis ou pour les suivants (un lien se trouve en haut de chaque page du forum )

  11. #11
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    gha !!
    bha merci beaucoup pour ces infos ! maintenant y a plus qu a !

Discussions similaires

  1. [XL-2007] Tableau avec index discontinu
    Par ecarbill dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/12/2012, 20h14
  2. VB Tableau avec index de type string
    Par damd22 dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/11/2009, 18h42
  3. [Débutant] Tableau avec titres
    Par saddamtohmto dans le forum MATLAB
    Réponses: 1
    Dernier message: 24/08/2007, 10h38
  4. Tableau avec string comme index
    Par Kiboumz dans le forum VB.NET
    Réponses: 3
    Dernier message: 17/03/2007, 00h22
  5. [Debutant][Tableau] Tableau indexé sur chaine de caractères
    Par SamRay1024 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 11h14

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