begin process at 2012 05 29 15:06:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Passer un tableau 2D en paramètre en C


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Passer un tableau 2D en paramètre en C

vendredi 16 décembre 2005 à 13:05:17 | Passer un tableau 2D en paramètre en C

poiuytrez3

Membre Club
Bonjour,
je souhaiterai passer en paramètre un tableau 2D, mais j'ai une erreur de compilation, voici mon code:
#include <stdio.h>
#include <stdlib.h>

void remplissage (int** tableau, int aLignes, int aColonnes)
{
    int i;
    int j;
    for(i = 0; i < aLignes; i++)
        for(j = 0; j < aColonnes; j++)
              tableau[i][j] = 0;
}  

int main()
{
  const int lignes = 10;
  const int colonnes = 20;
  int tab[10][20];
 
  // Rempli le tableau
  remplissage(tab, lignes, colonnes);

  system("PAUSE");
 
  return 0;
}

 

Merci de votre aide!


vendredi 16 décembre 2005 à 13:40:49 | Re : Passer un tableau 2D en paramètre en C

poiuytrez3

Membre Club
J'ai eu la réponse entre temps:
Il faut transformer le tableau 2D en tableau 1D, puis de faire joujou avec les pointeurs.
Voici le code corrigé:
#include <stdio.h>
#include <stdlib.h>

void remplissage (int** tableau, int aLignes, int aColonnes)
{
    int i;
    int j;
    for(i = 0; i < aLignes; i++)
        for(j = 0; j < aColonnes; j++)
              //tableau[i][j] = 0;
              *((int *)tableau+i+j) = 3;
    for(i = 0; i < aLignes; i++)
        for(j = 0; j < aColonnes; j++)
                printf("%d", tableau[i]);         

}  


int main()
{
  const int lignes = 10;
  const int colonnes = 20;
  int tab[lignes][colonnes];
 
  // Rempli le tableau
  remplissage(tab, lignes, colonnes);

  system("PAUSE");
 
  return 0;
}


vendredi 16 décembre 2005 à 13:41:25 | Re : Passer un tableau 2D en paramètre en C

poiuytrez3

Membre Club

PS: Si quelqu'un a une meilleure solution...

vendredi 16 décembre 2005 à 13:48:56 | Re : Passer un tableau 2D en paramètre en C

buno

Administrateur CodeS-SourceS
fais un cast:
remplissage((int **)tab, lignes, colonnes);

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
vendredi 16 décembre 2005 à 15:19:40 | Re : Passer un tableau 2D en paramètre en C

poiuytrez3

Membre Club
Salut Bruno,
je viens d'essayer mais ça ne marche pas.
En fait ma technique n'est pas terrible, j'ai l'impression que ça ne marche pas bien...


vendredi 16 décembre 2005 à 15:35:20 | Re : Passer un tableau 2D en paramètre en C

buno

Administrateur CodeS-SourceS
Moi, perso, je ne travaille pas avec des tableaux à plusieurs dimensions: une seule suffit avec de bons déplacements de pointeurs. Du coup, dans mes fonctions, je n'au que des "type *" en paramètres, c'est plus simple...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
vendredi 16 décembre 2005 à 15:40:17 | Re : Passer un tableau 2D en paramètre en C

poiuytrez3

Membre Club

En fait je vais faire un programme de traitement d'image, et j'ai besoin d'un tableau en 2D pour stocker les valeurs de couleurs de chaque pixel. Donc j'ai absolument besoir de cette fonction.

vendredi 16 décembre 2005 à 15:47:43 | Re : Passer un tableau 2D en paramètre en C

buno

Administrateur CodeS-SourceS
Du coup, utilise des "type **". Comme ça, tu peux les allouer dynamiquement:

m_Bitmap = new rgb* [Height()];
for (int i=0;i<Height();i++)
   m_Bitmap[i]=
new rgb[Width()];

Si tu veux un coup de main sur ton appli, va voir ma source qui traite des BMP

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
vendredi 16 décembre 2005 à 15:59:07 | Re : Passer un tableau 2D en paramètre en C

poiuytrez3

Membre Club

En fait mon problème vient de la fonction. Je n'arrive pas à comprendre pourquoi je ne peux pas utiliser tableau[i][j] de manière générale et *((int *)tableau+i+j)  doit avoir un bug.

J'ai juste besoin de ça. Mon problème est général, il ne se situe pas forcément sur l'histoire de l'image.

Merci.


samedi 17 décembre 2005 à 12:39:47 | Re : Passer un tableau 2D en paramètre en C

ctx_man

Perso je prefer les while, les for ne sont pas asser flexibles et on tendance à apporter des problème si tu ne sais pas exactement quand on doit verifier la condition de boucle. Si tu ecrit *((int *)tableau+i+j) = 3; tu dis que tableau[i+j] = 3 ! Par conséquent tu dépasse largement ton nombre de ligne et tu fais pointer tes ignes sur l'adresse mémoire 0x00000003 !!!

void remplissage (int** tableau, int aLignes, int aColonnes)
{
    int i;
    int j;
    i = 0;
    while(i < aLignes)
    {
         j = 0;
         while(j < aColonnes)
         {
               
//Formalisme tableau
               tableau[i][j] = 0;
               //Formalisme pointeur
               *(*(tableau + i) + j) = 0;
               j++;
         }
         i++;
   }
}

Le travail c'est la santé, ne rien faire c'est la préservé !!!

1 2

Cette discussion est classée dans : int, tableau, passer, paramètre, 2d


Répondre à ce message

Sujets en rapport avec ce message

Tableau à 2 dimensions en paramètre [ par BsEtZeOpLhD ] Bonjours, Voila mon problème : je n'arrive pas à passer une tableau a 2 dimensions en paramètre. Est ce que quelqu'un sais comment faire ? Merci voi Tableaux en paramètre de fonction [ par jazz2 ] Si les pointeurs sont l'unique façon de passer un tableau en paramètre de fonction, alors comment passer un tableau comme paramètre de fonction, de so Passer un tableau de char en paramètre [ par DeadStar117 ] Bonjour,Je cherche à passer des tableaux de char en paramètre à mes procédure mais je n'y arrive pas.Voila un exemple de code:GestionArbre GeAr;<font optimisation ??? [ par mana ] bonjour , je programme avec code bocks sous GNU GCC voici mon premier code : // 1. copie l'imge dans un tableau // 2. modifie l'image saugardée da vecteur 2D [ par williamcplusplus ] Bonjour à tous!Je désire accéder à chaque ligne d'un vecteur 2D de bit de la forme:vector > Tableaucode;Tableaucode.resize(9,vector(8,false));Quand je problème de allocation de tableau [ par boualiasma ] Bonsoir, Je voulais copier le contenu de fichier "exemple.txt" dans un tableau dynamique t de taille inconnue en avance. J'utilise le tableau pour fa c++ : problème de tableau dynamique dans une classe [ par rollingsteen ] Hello, je dois développer une application permettant de travailler sur de très gros nombres (200 digits) -> les digits sont stockés dans un tableau. passer un tableau 2D en paramètre et retourner une somme [ par lionpri ] Bonjour,Je suis débutant en C et j'ai du mal à comprendre les déclarations de fonction. J'aimerais passer un tableau 2D en paramètre d'une fonction et Exercice sur Pointeurs, classes, héritage... [ par snoozriton ] Bonjour à tous, étant en train d'étudier le C++, j'ai quelques soucis avec un exercice. C'est un classique dont je vous donne l'énoncé : [b]1. Défini probleme d'initialisation d'un tableau sous code blocks [ par juju116 ] bonjour j'ai voulu juste tester un code bidon pour voir si mon initialisation de tableau fonctionné et j'ai obtenu des résults incoherents je n'ai que


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales