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 :

Problème fonction et pointeurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 45
    Par défaut Problème fonction et pointeurs
    J'ai un bout de code que j'aimerai mettre sous forme de fonction, mais je m'emmêle dans les pointeurs.

    Voici le code que j'ai pour l'instant dans mon 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
     
                if(coord[2]=='1')
                {
                    tab[l0][0]=jeton;
                    for(i=0; i<(l0-coordlettre)*2; i=i+2)
                    {
                        gotoxy(13,14+i+coordlettre*2);
                        printf("%c", jeton);
                        Sleep(200);
                        gotoxy(13,14+i+coordlettre*2);
                        printf(" ");
                    }
     
                    l0--;
                }
    Ce code est répété 6 fois en tout.
    Ce qui change c'est l0, qui passe en l1, l2... jusqu'en l5.

    Voici ma fonction
    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
     
    void afftab(int *l)
    {
                if(coord[2]=='1')
                {
                    tab[*l][0]=jeton;
                    for(i=0; i<(*l-coordlettre)*2; i=i+2)
                    {
                        gotoxy(13,14+i+coordlettre*2);
                        printf("%c", jeton);
                        Sleep(200);
                        gotoxy(13,14+i+coordlettre*2);
                        printf(" ");
                    }
     
                    *l--;
                }
    }
    Problème, il me dit que mon tableau ainsi que les autres variable ne sont pas définies. Normal, je ne l'ai fait que dans le main. Mais je ne peux pas les déclarer dans la fonction car j'écraserai les anciennes valeurs de mes variables et ce n'est vraiment pas souhaitable.

    Ma question est donc : Que faire ? ^^

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Jei,

    Tu passes toutes les variables nécessaires à ta fonction en paramètres de cette fonction.

    Franchement, je ne vois pas ce qui t'arrête là-dedans.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 45
    Par défaut


    Je n'ai plus d'erreur de compil, mais maintenant quand je test le prog, j'ai une belle erreur

    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
     
    void afftab(int *l, char *jeton, int *coordlettre, char **coord[2], char ***tab[6][6], int *i)
    {
                if(**coord[2]=='1')
                {
                    ***tab[*l][0]=*jeton;
                    for(*i=0; *i<(*l-*coordlettre)*2; *i=*i+2)
                    {
                        gotoxy(13,14+i+*coordlettre*2);
                        printf("%c", *jeton);
                        Sleep(200);
                        gotoxy(13,14+i+*coordlettre*2);
                        printf(" ");
                    }
     
                    *l--;
                }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                afftab(&l0, &jeton, &coordlettre, &coord[2], &tab[6][6], &i);

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par lowwa132 Voir le message
    Ma question est donc : Que faire ? ^^
    Montrer la définition des variables.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 45
    Par défaut
    Dans mon main ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        char tab[6][6];
        char coord[4], nom1[40], nom2[40];
        int i, j, choix, victoire, coordlettre, l0, l1, l2, l3, l4, l5;
        int a_accent=0x85;
        int e_grave=0x8A;
        int e_aigu=0x82;
        int u_accent=0x97;
        char lettreligne, retourmenu, jeton;

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par lowwa132 Voir le message
    Dans mon main ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        char tab[6][6];
        char coord[4], nom1[40], nom2[40];
        int i, j, choix, victoire, coordlettre, l0, l1, l2, l3, l4, l5;
        int a_accent=0x85;
        int e_grave=0x8A;
        int e_aigu=0x82;
        int u_accent=0x97;
        char lettreligne, retourmenu, jeton;
    Ceci compile. Je ne sais pas ce que tu veux faire exactement. Il me semble qu'on devrait pouvoir organiser les données en tableaux de structures...
    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
     
    #include <stdio.h>
    #include <windows.h>
    #include <conio2.h>
     
    void f (char const coord[], char tab[][6], int *pl, int jeton,
            int coordlettre)
    {
       if (coord[2] == '1')
       {
          int i;
          tab[*pl][0] = jeton;
          for (i = 0; i < (*pl - coordlettre) * 2; i = i + 2)
          {
             gotoxy (13, 14 + i + coordlettre * 2);
             printf ("%c", jeton);
             Sleep (200);
             gotoxy (13, 14 + i + coordlettre * 2);
             printf (" ");
          }
     
          (*pl)--;
       }
    }
     
    int main (void)
    {
       char tab[6][6] = { {0} };
       char coord[4] = { 0 };
       int coordlettre = 0;
       int l[6] = { 0 };
       int jeton = 0;
     
       int i;
       for (i = 0; i < 5; i++)
       {
          f (coord, tab, l + i, jeton, coordlettre);
       }
       return 0;
    }

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 45
    Par défaut
    Ca compile en effet, mais il doit y avoir un problème au niveau de la boucle car ça ne fait pas la même chose à l'affichage.

    Ce code est utilisé dans mon puissance 4.

    En fait, l[i] (c'est vrai que j'aurai pu faire passer l0... li sous forme de tableau) corresponds à la case dans laquelle doit se placer le pion (car le pion descend dans une grille verticale).
    Ma grille de jeu, c'est tab[6][6].

    Je demande à l'utilisateur de rentrer ses coordonnées et je le mets dans coord[4]. Les coordonnées doivent être saisies sous la forme b 4, donc je viens chercher le numéro de la colonne (4) avec coord[2].
    Je convertis la lettre placée dans coord[0] sous forme de chiffre et la stocke dans coordlettre.

    Le jeton est en fait un char, car il prends la valeur 'X' pour le joueur 1 et 'O' (O comme Ophélie) pour le joueur 2.


    Donc pour chaque colonne possible, je fais descendre le pion grace à l'affichage avec gotoxy (pour l'instant je ne m'occupe que de la colonne 1, il est sûr qu'après je devrai modifier x de gotoxy pour que cela fonctionne avec les autres colonnes).

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 45
    Par défaut
    Ah je vois ce qu'il manque
    Avec
    Je veux en fait qu'il examine chacun des cas de coordonnées de colonnes, donc aller de coord[2] =='1' à coord [2] =='6'

    Je vais essayer de rajouter ce paramètre et je le poste.

    EDIT : Mouai ça merdouille :/

Discussions similaires

  1. Problème fonction affichage et pointeurs
    Par Glork dans le forum Débuter
    Réponses: 10
    Dernier message: 07/01/2013, 20h06
  2. Réponses: 11
    Dernier message: 25/03/2008, 23h12
  3. C++ Problème de fonctions et pointeurs
    Par zmatz dans le forum C++
    Réponses: 3
    Dernier message: 01/10/2005, 16h20
  4. [TTreeView] Problème avec les pointeurs d'objet
    Par BlackWood dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/07/2004, 14h31
  5. Problème passage de pointeur
    Par mick74 dans le forum MFC
    Réponses: 2
    Dernier message: 21/04/2004, 18h34

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