stan4950
Messages postés10Date d'inscriptionvendredi 15 novembre 2013StatutMembreDernière intervention26 novembre 2013
-
Modifié par BunoCS le 25/11/2013 à 19:12
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
26 nov. 2013 à 10:49
Bonsoir à tous,
Je fais actuellement un mini projet dans le cadre de mes études sur l'élaboration d'un jeu en C++. J'ai bien déclaré mes tableaux, initialisé mes tableaux etc....(et oui je suis débutant)!!^^ En clair j'ai a partir d'une fonction située dans le main de type switch do, le choix de choisir entre 3 grilles (tableaux) :
4 lignes par 4 colonnes avec 2 lettres
4 lignes par 9 colonnes avec 5 lettres
9 lignes par 9 colonnes avec 6 lettres
Le problème est que quand je lance la derniere grille (9x9) tout se passe bien, sa se compile et sa s'affiche a l'écran. En revanche pour la grille 4x4 sa s'affiche une fois sur 20 et pour la grille 4x9 sa me génére une erreur : violation etc.....
Après avoir passé l'aprem autour de ce problème, j'en ai conclu que j'ai du mal faire l'allocation dynamique, parce que j'avais oublié de taper if([T]=NULL); return T; et lorsque je l'ai fait les 3 grilles se génèrent mais aucune valeur s'affiche par contre....
Ci après une capture de comment mon allocation est faite
T = (int **)malloc(n1 * sizeof(int*));
for (i=0; i<n1; i++)
T[i] = (int *)malloc(n2 * sizeof(int));
if (T[i] == NULL)
printf("Allocation dynamique impossible");
return T;
stan4950
Messages postés10Date d'inscriptionvendredi 15 novembre 2013StatutMembreDernière intervention26 novembre 2013 25 nov. 2013 à 20:29
Excuse moi je ne le savais pas ... Pour ce qui est du if, j'ai rajouté des accolades après ma boucle for et après return mais rien n'y fait. Oui j'avais bien mis mes break .
Pourquoi ne pas continuer à poster sur ce sujet au lieu d'en recréer de nouveaux ?
De plus, je t'ai proposé une solution pas à pas pour réaliser ton projet, cela ne convient pas ? J'ai déjà réalisé le projet, je ne vais bien évidemment pas te le donner, mais je peux aisément te guider.
(Si tu pars sur du malloc, tu es déjà mal barré, comme déjà dit précedemment).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Je dois partir du malloc, c'est une étape qui m'est imposée...
Pourquoi ne pas l'avoir dit avant ?
Ça ne change pas grand chose. Au final, tu remplaces le std::vector par un malloc (à une dimension) dans la classe Array2D. La technique décrite dans mon mail est la même.