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 :

programmation modulair en C


Sujet :

C

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Points : 193
    Points
    193
    Par défaut programmation modulair en C
    Bonsoir tout le monde.

    J'étudie la programation modulaire en c.

    fichier main.c
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "gagnant.h"
    #include "quitter.h"
    #include "jeux1j.h"
    #include "jeux2j.h"
     
     
     
    /*
     
     
    */
    struct element
    {
     
    char pseudo1[20];
    char pseudo2[20];
    int choix;
    int k,l;
    char p4[7][7];
    char game;
     
    };
     
    struct element e;
     
                                                /*
    Cette fonction est le début du programme
     
                                                */
    int begingame()
    {
    printf("Bienvenue sur le jeux puissance 4\n"); 
    printf("\n");
    printf("Developpe par argon\n");
    printf("\n");
    printf("Voulez faire une partie à 2 joueur, ou jouer contre l'ordinateur\n");
    printf("Pour une partie à deux, taper 1, contre l'ordinateur taper 2\n");
    scanf("%d",&e.choix);
     
    if(e.choix==1 ||e.choix==2)
     
    {
              if(e.choix==1)
    {
        deuxgamer();
    }
     
        else if(e.choix==2)
             {
             vscomputeur();
             }
    }        
    else
    {
         printf("tempis vous avez fait le mauvais choix\n");
    }
    }
     
    int main(int argc, char *argv[])
    {
     
    begingame();  
     
      system("PAUSE");	
      return 0;
    }
    jeux1j.h

    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
     
    int vscomputeur()
    {
     
     
    printf("Bonjour je suis le terminator, vous allez m'affronter\n");    
    printf("Cher adverssaire entrer votre nom.\n");    
    scanf("%s",&e.pseudo1);
    printf("\n");
     
     
     
     
    printf("Vous aurrez les jetons Rouge: R, %s\n " , e.pseudo1);  
    printf("\n");
     
    printf("Moi, j'aurai les jeton bleu: B\n");
     
    printf("\n");
    printf("Le jeux debute, Choississe une colonne %s\n " , e.pseudo1);    
     
    printf("\n");
     
     
    onegamer();
     
     
     
    }
     
    int onegamer()
    {
    e.p4;
    e.game;
     
    int i,j;
     
    e.k=2;
    e.l=1;
    e.p4[0][1]='A';
    e.p4[0][2]='B';
    e.p4[0][3]='C';
    e.p4[0][4]='D';
    e.p4[0][5]='E';
    e.p4[0][6]='F';
    e.p4[0][7]='G';
     
     
     
     
    printf("%c",e.p4[0][1]);
     
    printf("%c",e.p4[0][2]);
     
    printf("%c",e.p4[0][3]);
     
    printf("%c",e.p4[0][4]);
     
    printf("%c",e.p4[0][5]);
     
    printf("%c",e.p4[0][6]);
     
    printf("%c\n\n",e.p4[0][7]);
     
     
    for(i=1;i<7;i++)
     
    {
     
    for(j=0;j<7;j++)
     
    {
     
    e.p4[i][j]='*';
    }
    printf("%s",e.p4[i]);
    printf("\n");
     
     
    }
     
    jeux1();
    return (0);
    }
     
    int jeux1()
    {
     
    int i,j;   
     
     
     
     
    scanf("%c\n",&e.game);
    printf("\n");
     
     
    printf("\n");
     
    printf("%c",e.p4[0][1]);
     
    printf("%c",e.p4[0][2]);
     
    printf("%c",e.p4[0][3]);
     
    printf("%c",e.p4[0][4]);
     
    printf("%c",e.p4[0][5]);
     
    printf("%c",e.p4[0][6]);
     
    printf("%c\n\n",e.p4[0][7]);
     
     
     
     
     
    if(e.game=='a')
    {
     e.p4[i][j]='R';
     
     if(e.p4[i+1][j]=='*')
     {
     e.p4[i][j]='*';
     e.p4[i+1][j]=='R';
     }
     
     
     
     
     
     
     
     
    }
     
    for(i=1;i<7;i++)
    {
     
    for(j=0;j<7;j++)
     
    {
     
    }
    printf("%s",e.p4[i]);
    printf("\n");
    }
     
     
    gagnantunjoueur();
    }
    /*
     
    */
    int consience()
    {
     
    e.p4;
    e.k;
    e.l;
     
     
    }
    Voici les erreurs.

    In file included from main.c
    function `vscomputeur':
    Je crois que le problème est au niveau de la stuture.

    de plus je n'ai pas compris si je dois ajouter les include dans les fichier ajouter.

    Pourriez vous me dire ce que je dois modifier pour que ce fonctionne.

    Merci

    Cordialement

    A bientôt

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Pas de code dans un .h
    Un .h contient seulement les prototypes ou les definitons de structures.

    Ensuite tu met les codes des fonctions dans de .c.
    Puis tu inclus ce qu'il faut ou il faut.
    Tu fait le makefile qui va bien ou tu charges ton IDE de le faire et c'est tout bon.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Points : 193
    Points
    193
    Par défaut
    Re

    J'aurais besoin de précision svp.

    Pas de code dans un .h
    Un .h contient seulement les prototypes ou les definitons de structures.
    C'est quoi les prototypes?
    Les definitons de structures c'est ce que j'ai déclaré dans le main.c?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Ensuite tu met les codes des fonctions dans de .c.
    Puis tu inclus ce qu'il faut ou il faut.
    Dois je aussi les includes dans les fichier que j'ai ajouter, c'est là que je n'est pas tout a fait compris.

    Tu fait le makefile qui va bien ou tu charges ton IDE de le faire et c'est tout bon.
    On ne ma pas expliqué ce qu'est makefile.

    Merci

    A +

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Petit exemple rapide

    Code fichier.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct {
        int a;
    }Mystruct;
     
    void fonction(Mystruct a);

    Code fichier.c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include "fichier.h" /* pour avoir le prototype de la fonction ainsi que la structure */
    #include <stdio.h>
     
    void fonction(Mystruct a)
    {
        printf("%d\n", a.a);
    }

    Code main.c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include "fichier.h"
     
    int main(void)
    {
        MyStruct a;
        a.a = 8;
        fonction(a);
        return 0;
    }

  5. #5
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include "fichier.h" /* pour avoir le prototype de la fonction ainsi que la structure */
    #include <stdio.h>
    Pourquoi pas directement <stdio.h> dans "fichier.h"?

  6. #6
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par seriousme
    Pourquoi pas directement <stdio.h> dans "fichier.h"?
    Parce que moi je marche de la sorte. Je n'inclus ce dont j'ai besoin que quand j'en ai besoin.

    Dans le .h je ne sais pas encore que j'ai besoin de stdio.h donc je ne l'inclus pas.
    Dans le .c apres avoir utilisé printf j'ai su que j'avais besoin de stdio.h donc je l'ai inclus.

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par seriousme
    Pourquoi pas directement <stdio.h> dans "fichier.h"?
    Pourquoi faire ?
    Est-ce que "fichier.h" a besoin de <stdio.h> ? Non.

    Si une des fonctions avait un paramètre de type FILE*, par exemple, alors oui, on aurait mis <stdio.h>. De même qui si on avait eu un paramètre de type size_t, on aurait mis <stddef.h>. Il faut mettre ce qui est nécessaire. Ni plus, ni moins.

    (On peut techniquement mettre plus, mais ça ne fait que montrer au monde entier qu'on ne maitrise pas son sujet... ben oui ,un .h comme ça, c'est public...)

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Skyrunner
    Petit exemple rapide
    Code fichier.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct {
        int a;
    }Mystruct;
     
    void fonction(Mystruct a);
    J'ajouterais les "défenses"
    Code fichier.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /* fichier.h */
    #ifndef H_FICHIER
    #define H_FICHIER
    typedef struct {
        int a;
    }Mystruct;
     
    void fonction(Mystruct a);
    #endif
    et je ne conseille pas de passer une structure en paramètre. Je recommande de passer uniquement son adresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void fonction(Mystruct *p);

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par argon
    C'est quoi les prototypes?
    C'est la partie 'interface' d'une fonction dans sa forme 'moderne'[1]. Voici la définition générale d'une fonction en C standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <type retourné> <nom de la fonction> ([parametre [, parametre[...]]])
    {
       <corps de la fonction>
     
       [return [valeur];]
    }
    La partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <type retourné> <nom de la fonction> ([parametre [, parametre[...]]])
    s'appelle l'interface. Elle définie les relations entre la fonction le monde exterieur :
    • Comment s'appelle la fonction ?
    • Y'a-t-il des paramètres ?
    • Quels sont ces paramètres (role, type, nombre) ?
    • Y'a-t-il une valeur retournée ?
    • Quel est le type de la valeur retournée ?

    La forme de cet interface s'appelle un prototype. Ici, c'est le prototype integré. Il est possible de 'détacher' ce prototype pour le mettre dans un fichier d'entête (.h). Pour celà, on fait une simple copie du prototype intégré et on ajoute un ';' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <type retourné> <nom de la fonction> ([parametre [, parametre[...]]]);
    Les definitons de structures c'est ce que j'ai déclaré dans le main.c?

    Ensuite tu met les codes des fonctions dans de .c.
    Puis tu inclus ce qu'il faut ou il faut.
    Dois je aussi les includes dans les fichier que j'ai ajouter, c'est là que je n'est pas tout a fait compris.
    Il faut que le fichier qui contient la définition de la fonction ait une 'vue' sur le prototype séparé. Il faut donc inclure le .h qui contient le prototype.

    Il faut aussi que dans chaque fichier.c où la fonction est utilisée (appelée), son prototype soit 'en vue'. La aussi, il faut donc inclure le .h qui contient le prototype.
    On ne ma pas expliqué ce qu'est makefile.
    C'est un outil qui permet, entre autres, de gérer des projets. Pour le moment, si tu utilises un IDE (Code::Blocks etc.), tu n'en as pas besoin.
    -----------------------
    [1] Avant la normalisation du langage en 1989, l'interface était présenté différemment, et on ne savait rien des paramètres.

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Points : 193
    Points
    193
    Par défaut
    Bonjour tout le monde

    Y a certain élèment que je n'ai pas compris


    Voici le fichier où il ya la structure.
    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
     
    typedef struct element
    {
     
    char pseudo1[20];
    char pseudo2[20];
    int choix;
    int k,l;
    char p4[7][7];
    char game;
     
    } element;
     
     
    void(element e)
    Voici le fichier main.
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "gagnant.c"
    #include "quitter.c"
    #include "jeux1j.c"
    #include "jeux2j.c"
    #include "strutu.h"
     
     
    /*
     
     
    */
     
                                                /*
    Cette fonction est le début du programme
     
                                                */
    int begingame(element e)
    {
    printf("Bienvenue sur le jeux puissance 4\n"); 
    printf("\n");
    printf("Developpe par argon\n");
    printf("\n");
    printf("Voulez faire une partie à 2 joueur, ou jouer contre l'ordinateur\n");
    printf("Pour une partie à deux, taper 1, contre l'ordinateur taper 2\n");
    scanf("%d",&e.choix);
     
    if(e.choix==1 ||e.choix==2)
     
    {
              if(e.choix==1)
    {
        deuxgamer();
    }
     
        else if(e.choix==2)
             {
             vscomputeur(element e);
             }
    }        
    else
    {
         printf("tempis vous avez fait le mauvais choix\n");
    }
    }
     
    int main(int argc, char *argv[])
    {
     element e;  
    begingame();  
     
      system("PAUSE");	
      return 0;
    }
    Voici le fichier jeux1j.c
    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
     
    #include <stdio.h>
    #include "strutu.h"
     
    int vscomputeur(element e)
    {
     
     
    printf("Bonjour je suis le terminator, vous allez m'affronter\n");    
    printf("Cher adverssaire entrer votre nom.\n");    
    scanf("%s",&e.pseudo1);
    printf("\n");
     
     
     
    printf("Vous aurrez les jetons Rouge: R, %s\n " , e.pseudo1);  
    printf("\n");
     
    printf("Moi, j'aurai les jeton bleu: B\n");
     
    printf("\n");
    printf("Le jeux debute, Choississe une colonne %s\n " , e.pseudo1);    
     
    printf("\n");
     
     
    onegamer();
     
     
     
    }
     
    int onegamer(element e)
    {
    e.p4;
    e.game;
     
    int i,j;
     
    e.k=2;
    e.l=1;
    e.p4[0][1]='A';
    e.p4[0][2]='B';
    e.p4[0][3]='C';
    e.p4[0][4]='D';
    e.p4[0][5]='E';
    e.p4[0][6]='F';
    e.p4[0][7]='G';
     
     
     
     
    printf("%c",e.p4[0][1]);
     
    printf("%c",e.p4[0][2]);
     
    printf("%c",e.p4[0][3]);
     
    printf("%c",e.p4[0][4]);
     
    printf("%c",e.p4[0][5]);
     
    printf("%c",e.p4[0][6]);
     
    printf("%c\n\n",e.p4[0][7]);
     
     
    for(i=1;i<7;i++)
     
    {
     
    for(j=0;j<7;j++)
     
    {
     
    e.p4[i][j]='*';
    }
    printf("%s",e.p4[i]);
    printf("\n");
     
     
    }
     
    jeux1();
    return (0);
    }
     
    int jeux1(element e)
    {
     
    int i,j;   
     
     
     
     
    scanf("%c\n",&e.game);
    printf("\n");
     
     
    printf("\n");
     
    printf("%c",e.p4[0][1]);
     
    printf("%c",e.p4[0][2]);
     
    printf("%c",e.p4[0][3]);
     
    printf("%c",e.p4[0][4]);
     
    printf("%c",e.p4[0][5]);
     
    printf("%c",e.p4[0][6]);
     
    printf("%c\n\n",e.p4[0][7]);
     
     
     
     
     
    if(e.game=='a')
    {
     e.p4[i][j]='R';
     
     if(e.p4[i+1][j]=='*')
     {
     e.p4[i][j]='*';
     e.p4[i+1][j]=='R';
     }
     
     
     
    }
     
    for(i=1;i<7;i++)
    {
     
    for(j=0;j<7;j++)
     
    {
     
    }
    printf("%s",e.p4[i]);
    printf("\n");
    }
     
     
    gagnantunjoueur();
    }
    /*
     
    */
    int consience(element e)
    {
     
    e.p4;
    e.k;
    e.l;
     
     
    }

    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
     
    #include <stdio.h>
    #include "strutu.h"
    int twogamer(element e)
    {
     e.p4;
     int i,j;
     
     
     
    e.p4[0][1]='A';
    e.p4[0][2]='B';
    e.p4[0][3]='C';
    e.p4[0][4]='D';
    e.p4[0][5]='E';
    e.p4[0][6]='F';
    e.p4[0][7]='G';         
     
     
     
    printf("%c",e.p4[0][1]);
     
    printf("%c",e.p4[0][2]);
     
    printf("%c",e.p4[0][3]);
     
    printf("%c",e.p4[0][4]);
     
    printf("%c",e.p4[0][5]);
     
    printf("%c",e.p4[0][6]);
     
    printf("%c\n\n",e.p4[0][7]);
     
     
    for(i=1;i<7;i++)
     
    {
     
    for(j=0;j<7;j++)
     
    {
     
    e.p4[i][j]='*';
    }
     
    printf("%c",e.p4[i]);
     
     
    printf("\n");
     
     
    }
     
     
    scanf("%s\n",&e.game);
    printf("\n\n");
     
     
     
     
     
    }
    Voici le fichier jeux2j.c
    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
     
    #include <stdio.h>
    #include "strutu.h"
     
    int vscomputeur(element e)
    {
     
     
    printf("Bonjour je suis le terminator, vous allez m'affronter\n");    
    printf("Cher adverssaire entrer votre nom.\n");    
    scanf("%s",&e.pseudo1);
    printf("\n");
     
     
     
    printf("Vous aurrez les jetons Rouge: R, %s\n " , e.pseudo1);  
    printf("\n");
     
    printf("Moi, j'aurai les jeton bleu: B\n");
     
    printf("\n");
    printf("Le jeux debute, Choississe une colonne %s\n " , e.pseudo1);    
     
    printf("\n");
     
     
    onegamer();
     
    }
     
    int onegamer(element e)
    {
    e.p4;
    e.game;
     
    int i,j;
     
    e.k=2;
    e.l=1;
    e.p4[0][1]='A';
    e.p4[0][2]='B';
    e.p4[0][3]='C';
    e.p4[0][4]='D';
    e.p4[0][5]='E';
    e.p4[0][6]='F';
    e.p4[0][7]='G';
     
     
     
     
    printf("%c",e.p4[0][1]);
     
    printf("%c",e.p4[0][2]);
     
    printf("%c",e.p4[0][3]);
     
    printf("%c",e.p4[0][4]);
     
    printf("%c",e.p4[0][5]);
     
    printf("%c",e.p4[0][6]);
     
    printf("%c\n\n",e.p4[0][7]);
     
     
    for(i=1;i<7;i++)
     
    {
     
    for(j=0;j<7;j++)
     
    {
     
    e.p4[i][j]='*';
    }
    printf("%s",e.p4[i]);
    printf("\n");
     
     
    }
     
    jeux1();
    return (0);
    }
     
    int jeux1(element e)
    {
     
    int i,j;   
     
     
     
     
    scanf("%c\n",&e.game);
    printf("\n");
     
     
    printf("\n");
     
    printf("%c",e.p4[0][1]);
     
    printf("%c",e.p4[0][2]);
     
    printf("%c",e.p4[0][3]);
     
    printf("%c",e.p4[0][4]);
     
    printf("%c",e.p4[0][5]);
     
    printf("%c",e.p4[0][6]);
     
    printf("%c\n\n",e.p4[0][7]);
     
     
     
     
     
    if(e.game=='a')
    {
     e.p4[i][j]='R';
     
     if(e.p4[i+1][j]=='*')
     {
     e.p4[i][j]='*';
     e.p4[i+1][j]=='R';
     }
     
     
     
     
     
     
     
     
    }
     
    for(i=1;i<7;i++)
    {
     
    for(j=0;j<7;j++)
     
    {
     
    }
    printf("%s",e.p4[i]);
    printf("\n");
    }
     
     
    gagnantunjoueur();
    }
    /*
     
    */
    int consience(element e)
    {
     
    e.p4;
    e.k;
    e.l;
     
     
     
     
     
     
     
     
    }


    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    /*
     
    Cette fonction permet
    */
     
     
    gagnantdeuxjoueurs()
    {
     
     
     
     
     
     
     
    } /*
    Cette fonction permet
    */
    gagnantunjoueur()
    {
     
     
     
     
     
    }
    Voici le fichier
    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
     
    #include "strutu.h"
    #include <stdio.h>
    /*
    Cette fonction propose au joueur une nouvelle partie.
     
    */  
    int end()
    {
    printf("souhaitez vous refaire un partie.");     
     
     
     
     
    }

    projet puissance 4\quitter.c:1, from main.c In file included from quitter.c:1, from main.c

    projet puissance 4\strutu.h syntax error before "e"



    projet puissance 4\jeux1j.c:2, from main.c In file included from jeux1j.c:2, from main.c


    projet puissance 4\strutu.h redefinition of `struct element'

    projet puissance 4\strutu.h redefinition of typedef 'element'

    projet puissance 4\strutu.h previous declaration of 'element' was here

    projet puissance 4\strutu.h syntax error before "e"

    projet puissance 4\jeux1j.c syntax error before string constant

    jeux1j.c conflicting types for 'printf'


    projet puissance 4\jeux1j.c a parameter list with an ellipsis can't match an empty parameter name list declaration

    projet puissance 4\jeux1j.c conflicting types for 'printf'

    projet puissance 4\jeux1j.c a parameter list with an ellipsis can't match an empty parameter name list declaration


    projet puissance 4\jeux1j.c [Warning] data definition has no type or storage class

    projet puissance 4\jeux1j.c syntax error before string constant

    projet puissance 4\jeux1j.c conflicting types for 'scanf'

    projet puissance 4\jeux1j.c a parameter list with an ellipsis can't match an empty parameter name list declaration
    Je pense qu'il dois manquer des include ou autre d'apres les erreur.

    Pourriez vous me préciser ce qu'il manque, de plus, je pense que la structure n'est pas correct.

    Pour information je vous signal que je travail avec dev cpp

    Merci

    Cordialement

    A bientôt

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par argon
    Y a certain élèment que je n'ai pas compris
    Voici le fichier où il ya la structure.
    C'est quoi ça ?

  12. #12
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Si une des fonctions avait un paramètre de type FILE*, par exemple, alors oui, on aurait mis <stdio.h>
    Par exemple.
    De plus étant donné que "fichier.h" est destiné à être inclu dans "fichier.c" on évite le dédoublement.
    Bien sûr en cours de dévellopement quand tout les headers necessaires et toutes les fonctions ne sont pas définies on peut mettre ce dont on a besoin là où on en a besoin; la factorisation n'intervenant qu'à la fin.

  13. #13
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par argon
    Voici le fichier main.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <stdio.h>
    #include <stdlib.h>
    #include "gagnant.c"
    #include "quitter.c"
    #include "jeux1j.c"
    #include "jeux2j.c"
    #include "strutu.h"
    Ce n'est pas ça la programmation modulaire...
    C'est une très mauvaise idée d'inclure des sources .c dans un fichier .c.
    Ce qu'il faut c'est compiler chaque fichier source séparément, et ensuite laisser l'éditeur de lien faire son boulot.

  14. #14
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par seriousme
    Par exemple.
    De plus étant donné que "fichier.h" est destiné à être inclu dans "fichier.c" on évite le dédoublement.
    Rien compris. C'est quoi un dedoublement ?
    Bien sûr en cours de dévellopement quand tout les headers necessaires et toutes les fonctions ne sont pas définies on peut mettre ce dont on a besoin là où on en a besoin; la factorisation n'intervenant qu'à la fin.
    Pourquoi faire ? Il n'y a rien à factoriser du tout. Tu inclues à la demande et c'es t tout. Evidemment, le compilateur doit être réglé pour détecter le manque de prototypes, et les headers protégés contre les inclusions miltiples, mais çà, c'est le minimum vital...

  15. #15
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Points : 193
    Points
    193
    Par défaut
    Bonsoir tout le monde

    J'ai modifier le code.

    je vais vous montrer que deux fichier pour ne pas trop vous embêter.

    De cette facon ca fonctionne, mai j'ignore si c'est bien ainsi que le fait des programme en c bien structuré.

    voici le fichier strutu.h
    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
     
    typedef enum {FALSE = 0, TRUE = 1} bool;
     
    struct element
    {
     
    char pseudo1[20];
    char pseudo2[20];
    int choix;
    int k,l;
    char p4[7][7];
    char game;
    bool quitter; 
    };
     
    struct element e;
    ici le main.c
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "strutu.h"
     
     
    /*
     
     
    */
     
                                                /*
    Cette fonction est le début du programme
     
                                                */
    int begingame()
    {
    printf("Bienvenue sur le jeux puissance 4\n"); 
    printf("\n");
    printf("Developpe par argon\n");
    printf("\n");
    printf("Voulez faire une partie à 2 joueur, ou jouer contre l'ordinateur\n");
    printf("Pour une partie à deux, taper 1, contre l'ordinateur taper 2\n");
    scanf("%d",&e.choix);
     
    if(e.choix==1 ||e.choix==2)
     
    {
              if(e.choix==1)
    {
        deuxgamer();
    }
     
        else if(e.choix==2)
             {
             vscomputeur();
             }
    }        
    else
    {
         printf("tempis vous avez fait le mauvais choix\n");
    }
    }
     
    int main(int argc, char *argv[])
    {
     
    begingame();  
     
     
      return 0;
    }
    J'ignore si c'est correcte.

    De plus, il faut que je compile 2 fois, et ca j'ignore pourquoi.

    La question que je me pose, c'est si j'ai bien compris le principe ou pas.

    Merci

    A+

  16. #16
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par argon
    je vais vous montrer que deux fichier pour ne pas trop vous embêter.

    voici le fichier strutu.h
    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
     
    typedef enum {FALSE = 0, TRUE = 1} bool;
     
    struct element
    {
     
    char pseudo1[20];
    char pseudo2[20];
    int choix;
    int k,l;
    char p4[7][7];
    char game;
    bool quitter; 
    };
     
    struct element e;
    le début, ça va. La dernière ligne n'a rien à faire là. Dans un .h, on ne met pas de définition de variable.

    Cette ligne doit être dans un fichier genre "element.c"

    Autre chose importante au niveau de la conception. Ce ne sont pas les .h qui font le découpage, mais les .c.

    En fait, après analyse, le programme doit être découpé en plusieurs 'blocs fonctionnels' (BF). Chaque BF se voit attribué un identificateur. Celui-ci sert de nom pour le .c dans lequel les fonctions du BF seront codées. L'interface sera placé dans un fichier d'entête .h du même nom.

  17. #17
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Points : 193
    Points
    193
    Par défaut
    Re

    Emmanuel Delahaye, là c'est du console que je fais je commence à attaquer les interfaces graphique en c, dans une semaine.


    Je dois mêttre cette ligne dans chaque fichier.c , et l'enlever de strutu.h

    Autre chose importante au niveau de la conception. Ce ne sont pas les .h qui font le découpage, mais les .c.

    En fait, après analyse, le programme doit être découpé en plusieurs 'blocs fonctionnels' (BF). Chaque BF se voit attribué un identificateur. Celui-ci sert de nom pour le .c dans lequel les fonctions du BF seront codées. L'interface sera placé dans un fichier d'entête .h du même nom.
    Ce que tu m'explique ci-dessus est assé dur à assémiller.

    Je n'ai fai qu'un fichier.h, les autre sont des fichier.c

    A+

  18. #18
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par argon
    Emmanuel Delahaye, là c'est du console que je fais je commence à attaquer les interfaces graphique en c, dans une semaine.
    Rapport avec la choucroute ?
    Je dois mêttre cette ligne dans chaque fichier.c , et l'enlever de strutu.h
    Non. Tu dois la définir dans un fichier.c (par exemple data.c). Tu dois ensuite définir un fichier data.h dans lequel tu places une déclaration de cette variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern struct element e;
    Evidemment, il faut inclure avant le .h qui contient la définition de struct element. Tout cela est très logique, mais doit être fait au moment du codage, et non après coup...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /* data.h */
    #include "element.h"
    extern struct element e;
    Ce que tu m'explique ci-dessus est assé dur à assémiller.

    Je n'ai fai qu'un fichier.h, les autre sont des fichier.c
    Mauvaise réalisation. Chaque fichier .c a des éléments qui dont 'exportés' (visibles de l'extérieur) : fonctions, variables. Ces éléments doivent avoir une déclaration séparée (interface) située dans un .h correspondant.

    Exemple :
    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
     
    /* xx.c */
     
    /* fonctions */
    int xx_a(void)
    {
       /* ... */
    }
     
    void xx_b (char *)
    {
       /* ... */
    }
     
    /* variables */
    int xx_x;
    char xx_y[10];
    Le .h avec les interfaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /* xx.h */
     
    /* fonctions */
    int xx_a(void);
    void xx_b (char *);
     
    /* variables */
    extern int xx_x;
    extern char xx_y[10];
    Pour assurer la cohérence, on inclus le .h dans le .c :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /* xx.c */
    #include "xx.h"
     
    /* fonctions */
    int xx_a(void)
    <...>
    efin, pour éviter les définitions multiples dans le même .c, on met une protection dans les .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #ifndef H_XX
    #define H_XX
    /* xx.h */
     
    /* fonctions */
    int xx_a(void);
    void xx_b (char *);
     
    /* variables */
    extern int xx_x;
    extern char xx_y[10];
     
    #endif
    Détails ici :
    http://emmanuel-delahaye.developpez....ganiser_source
    http://emmanuel-delahaye.developpez.....htm#organiser

  19. #19
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Rapport avec la choucroute ?
    A cause de ta phrase dans ton precedent post

    L'interface sera placé dans un fichier d'entête .h du même nom.
    Il a du comprendre l'interface graphique

  20. #20
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Points : 193
    Points
    193
    Par défaut
    Re

    Bon ca va peut être venir un jour.

    ici strutu.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    typedef enum {FALSE = 0, TRUE = 1} bool;
     
    struct element
    {
     
    char pseudo1[20];
    char pseudo2[20];
    int choix;
    int k,l;
    char p4[7][7];
    char game;
    bool quitter; 
    };
    Nouveau fichier element.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include "strutu.h"
    extern struct element e;
    ici le main.c

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "strutu.h"
    #include "element.h"
     
    /*
    Ici nous sommes dans le fichier principal du jeux.
     
    */
     
                                                /*
    Cette fonction est le début du programme
     
                                                */
    int begingame()
    {
    printf("Bienvenue sur le jeux puissance 4\n"); 
    printf("\n");
    printf("Developpe par argon\n");
    printf("\n");
    printf("Voulez faire une partie à 2 joueur, ou jouer contre l'ordinateur\n");
    printf("Pour une partie à deux, taper 1, contre l'ordinateur taper 2\n");
    scanf("%d",&e.choix);
     
    if(e.choix==1 ||e.choix==2)
     
    {
              if(e.choix==1)
    {
        deuxgamer();
    }
     
        else if(e.choix==2)
             {
             vscomputeur();
             }
    }        
    else
    {
         printf("tempis vous avez fait le mauvais choix\n");
    }
    }
     
    int main(int argc, char *argv[])
    {
     
    begingame();  
     
     
      return 0;
    }

    Les erreurs reçu.

    projet puissance 4\element.h:1, from main.c In file included from element.h:1, from main.c


    projet puissance 4\strutu.h conflicting types for 'FALSE'

    projet puissance 4\strutu.h conflicting types for 'TRUE'

    projet puissance 4\strutu.h previous declaration of 'bool' was here

    projet puissance 4\strutu.h redefinition of `struct element'
    J'ai un probleme avec la déclaration de la variable booleean je crois.

    Que dois je faire?

    mon prof me fait rire il nous demande un projet struturé comme un pros, sans nous faire de faire de cours dessus.

    A +

Discussions similaires

  1. programmation modulaire sur devc++
    Par lity7 dans le forum C
    Réponses: 1
    Dernier message: 23/02/2007, 18h40
  2. L'interet de la programmation modulaire.
    Par giggs dans le forum C
    Réponses: 3
    Dernier message: 01/11/2006, 12h35
  3. programmation modulaire en C
    Par lastrecrue dans le forum GTK+ avec C & C++
    Réponses: 11
    Dernier message: 28/06/2006, 21h03
  4. programmation modulaire
    Par barbarello dans le forum C++
    Réponses: 2
    Dernier message: 19/02/2006, 13h04
  5. [Projet] Programmation modulaire d'un projet.
    Par loverdose dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 18/11/2005, 21h59

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