begin process at 2013 05 26 10:31:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Tableau à 2 dimension + fonction


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

Tableau à 2 dimension + fonction

dimanche 17 juin 2012 à 18:42:07 | Tableau à 2 dimension + fonction

GrosKiff1994

Bonsoir,

Je débute en programmation, et je galère avec un simple tableau à 2 dimensions à envoyer dans une fonction pour le mettre à 0.

Code C/C++ :
#include <iostream>

using namespace std;

void Clear(int *p)
{
    int i = 0;
    int j;
    for (i=0; i<8; i++)
    {
        j = 0;
        for (j=0; j<8; j++)
        {
            p[i][j] = 0;

        }
    }
}

void DrawScreen();

int main()
{
    cout << "PACMAN TEST" << endl;

    int positionX = 3;
    int positionY = 3;

    int tableau[8][8];

    Clear(tableau);

    while(1)
    {
        DrawScreen();
    }

    return 0;
}


l'erreur : |14|error: invalid types 'int[int]' for array subscript|

C'est sans doute une histoire de pointeur, mais je ne vois pas où est le problème.

Merci
lundi 18 juin 2012 à 10:21:52 | Re : Tableau à 2 dimension + fonction

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
Bonjour.

Évite les "using namespace", voir: [ Lien ]

Ensuite, c'est normal. Un int* n'est pas un int[8][8] ! Ce n'est pas la même chose. On peut convertir un int[] en int*, mais on ne peut pas convertir un int[][] en int* ou int**. Il te faut soit utiliser un tableau à double dimension en int** ou alors spécifier que la fonction prend du int[8][8].

Ex:
Code C/C++ :
#include <iostream>

void clear(int p[8][8])
{
    for (int i = 0; i < 8; ++i)
      for (int j = 0; j < 8; ++j)
        p[i][j] = 0;
}

void DrawScreen();

int main()
{
    std::cout << "PACMAN TEST" << std::endl;

    int tableau[8][8];
    clear(tableau);

    while(1)
      DrawScreen();
    return 0;
}


Néanmoins, je te conseil d'oublier les tableaux comme tu le fais et d'utiliser un std::vector ! Bien plus pratique et puissant à utiliser.

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
lundi 18 juin 2012 à 12:00:53 | Re : Tableau à 2 dimension + fonction

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Si perfs requises (cas typique d'un jeu):
- On garde les tableaux.
- On vire les boucles imbriquées.
- Simple boucle s'inlinera impec.

inline void clear(int *p, DWORD n)
{
do {
p[n - 1] = 0;
} while(--n);
}

int tableau[8][8];
clear((int*) tableau, 8*8);

ciao...
BruNews, MVP VC++
lundi 18 juin 2012 à 13:13:37 | Re : Tableau à 2 dimension + fonction

yann_lo_san

Salut,

après la très bonne réponse de BruNews,
on pourrait aussi imaginer avoir des tableaux de différents types de numériques (short, float ect...)

Donc la même non typée et sans boucle :

Code C/C++ :
inline void clear(void *p, DWORD nbElem, int sizeOfTypeElem) 
{ 
	memset(p, 0, nbElem * sizeOfTypeElem);
} 


L'appel :

Code C/C++ :
float tableau[8][8]; 
clear(tableau, 8*8, sizeof(float)); 


bye...
lundi 18 juin 2012 à 15:51:50 | Re : Tableau à 2 dimension + fonction

GrosKiff1994

Merci pour ces réponses !
Cependant yann_lo_san (cool, un autre Yann sur Terre !), je vais tenter de maitriser les bases avant de taper dans du memset, même si je crois comprendre.

Merci et bonne semaine


Cette discussion est classée dans : fonction, int, tableau, dimension, for


Répondre à ce message

Sujets en rapport avec ce message

passage de tableau à 3 dimensions en paramètre à une fonction [ par snake57 ] Bonjour à tous, J'ai un tableau à 3 dimensions que je veux afficher à partir d'une fonction. J'ai donc créé une fonction mais celle-ci affiche...n'im position POINT et tableau 2 dimension [ par sokotanic ] bonjour à t.l.m. je souhaite recuperer la position x et y de la souris et la mettre dans un tableau 2 dimensions et afficher cette position dans un p dimension constante d'un tableau [ par Skyffer3 ] Bonjour à tous, [^^happy13] Je me pose une question suite à une affirmation de mon livre pour apprendre le C++ : "La dimension d'un tableau ne peut ê creation de plusieur tableau [ par foxwar ] Bonjour, j'aimerai cree un programme ki permet de cree plusieur tableau du different taille et les afficher g ecirt ce programme mai je c pa ce k'il 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 Allocation dynamique tableau 2D : erreur de seg [ par noname001 ] Bonjour à tous, [^^happy13] j'aimerais faire appel à vos lumières concernant deux codes. Ils ont tous les deux pour but de créer un tableau 2D dynami problème avec l'initialision d'un tableau [ par khen ] Bonjour,voila j'ai un petite problème avec l'initialisation de mon tableau , je vous explique le problèmeon a un tableau de 3 dimension appelé tab et Tableau 2 dimension en fonction [ par acidjackproject ] Bonjour, j'aimerai pas un tableau à 2 dimension en paramètre sans pointeurs. Quand je le fais (comme suit), il m'affiche "error:array type has incompl Fonction qui utilise un int* externe pour créer un tableau [ par tibob51 ] Bonjour je voudrai savoir si il est possible qu'une fonction recoive un pointeur d'entier,créé un tableau dynamiquement puis l'initialise,afin de le r fonction min max [ par devamos ] bonjour,j'aimerais des corrections,si vous pouvez m'aider j'ai ecri ces instructions en devc++,,, c'est une fonction qui cherche le max et le min dans


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

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,374 sec (4)

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