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 :

Pas mal de problemes avec les pointeurs de tableaux


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 68
    Par défaut Pas mal de problemes avec les pointeurs de tableaux
    Bonjour, en continuant à ecrire mon programme aujourd'hui, je tombe sur un gros probleme qui me décourage un peu.

    Je suis en train de faire un puissance 4 à allocation de mémoire dynamique, où la hauteur peut monter à l'infinie.
    J'ai déjà ecrit tout l'algo sur papier, donc je sais à peu pres ce que je vais ecrire dans le programme.

    C'est un programme test, donc toutes les fonctions sont dans le même fichier, je m'y prend toujours de cette manière pour coder, l'algo sur papier, un programme test, et une fois que tout marche nickel, ben là je separe les fonctions dans des fichiers différents etc, enfin je fais un truc
    plus propre.

    Bref, en ecrivant mon code, je voulais tester si ma fonction verification horizontale de la grille marchait bien, donc j'ai voulu à la main dans le code, mettre des 'O' un peu partout, par exemple p4[4][3]='O', et lors de la compilation, j'ai une erreur :s

    Avec l'utilisation des pointeurs j'ai du mal à me ballader dans mon tableau, à faire des tests.

    J'ai aussi remarquer que lorsque je fais *p4='O', ça me remplit automatique tous le tableau avec des O :s

    Bref, voilà le code :

    code

    J'ai aussi fait une ebauche d'une fonction poserpion, où lorsque le pion serait tout en haut d'une colonne, en utilisant realloc, on augmente la grille de 10 lignes. Mais bon ça n'a pas l'air de marcher

    ebauche du code poserpion :

    code

    Merci d'avance pour vos aides ou conseils éventuels.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Salut

    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
    char *creer_grille(int col,int lignes) {
     
       int i,j;
     
       char *p4=malloc(lignes*sizeof(*p4));
       if(p4==NULL) exit(0); // exit(EXIT_FAILURE);
     
       for(i=0;i<lignes;i++)
          p4=malloc(col*sizeof(*p4)); //FAUX : p4[i]=malloc(col*sizeof(*p4[i])); if(p4[i]==NULL) exit(EXIT_FAILURE)
     
         for(i=0;i<lignes;i++)
          for(j=0;j<col;j++)
             *p4=' '; /*  FAUX  :*p4[i][j]=' '; 
     
    return p4; }

  3. #3
    Membre émérite 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
    Par défaut
    Pourquoi deux malloc pour le même pointeur ?

    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
    char *creer_grille(int col,int lignes)
    {
        int i,j;
        
        char *p4=malloc(lignes*sizeof(*p4));
        if(p4==NULL)
            exit(0);
            
        for(i=0;i<lignes;i++)
            p4=malloc(col*sizeof(*p4));
            
        for(i=0;i<lignes;i++)
            for(j=0;j<col;j++)
                *p4=' ';
                
        return p4;
    }
    Si c'est pour créer un tableau dynamique à 2 dimensions, ce n'est pas du tout comme ça.
    Jettes un oeil la dessus : http://c.developpez.com/faq/c/?page=...bleau_2D_alloc

    [EDIT] Mince, encore grillé [/EDIT]

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Citation Envoyé par crocodilex
    Mince, encore grillé
    pour une fois que je suis le 1e à répondre...

  5. #5
    Membre émérite 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
    Par défaut
    Citation Envoyé par salseropom
    pour une fois que je suis le 1e à répondre...
    OK, mais ta correction est incomplete et même fausse
    Profites en pour regarder le lien sur la FAQ que j'ai donné.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Citation Envoyé par crocodilex
    OK, mais ta correction est incomplete et même fausse
    Profites en pour regarder le lien sur la FAQ que j'ai donné.
    oups... j'ai fait un mauvais copier coller


  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 68
    Par défaut
    Merci pour vos réponses.

    Apres avoir suivi tes corrections j'ai des erreurs à la compilation :

    retest.c: In function `main':
    retest.c:89: warning: passing arg 1 of `free' makes pointer from integer without a cast
    retest.c: In function `creer_grille':
    retest.c:109: error: invalid type argument of `unary *'
    retest.c:109: warning: assignment makes integer from pointer without a cast
    retest.c:110: warning: comparison between pointer and integer
    retest.c:114: error: subscripted value is neither array nor pointer

Discussions similaires

  1. probleme avec les pointeurs
    Par solitaire2010 dans le forum Débuter
    Réponses: 3
    Dernier message: 12/06/2010, 13h42
  2. un 'petit' probleme avec les pointeurs
    Par gss3000 dans le forum C++
    Réponses: 4
    Dernier message: 04/01/2010, 15h39
  3. Problem avec les pointeurs
    Par Pellodu21 dans le forum C++
    Réponses: 4
    Dernier message: 28/10/2007, 00h37
  4. problem avec les pointeurs
    Par Halloula dans le forum C
    Réponses: 3
    Dernier message: 22/01/2007, 16h54
  5. [Débutant] Probleme avec les pointeurs
    Par amira dans le forum C
    Réponses: 14
    Dernier message: 04/12/2006, 14h27

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