Problème programme c - C - Programmation
Marsh Posté le 15-12-2010 à 14:16:55
Il existe un fonction recherche...
Marsh Posté le 15-12-2010 à 15:47:56
Je veux bien, mais je n'ai pas trouvé de cas similaire au mien, où alors je n'ai pas vu...
Marsh Posté le 15-12-2010 à 16:42:21
J'ai vu que j'avais mis un * en trop ainsi qu'un y, mais le programme plante toujours.
Je suis désolé mais je n'ai pas trouvé la réponse en recherchant dans les sujets existants déjà.
Marsh Posté le 15-12-2010 à 16:51:49
Bon ton initialisation de tableau n'est pas géniale (cf recherche).
Par contre ton appel à initialisation dans le for doit faire tout planter:
- Tu appelle n fois la fonction alors qu'une fois suffirait
- Ton tableau n'étant pas complètement initialisé lors des n-1 premiers appels, tu as toutes les chances de faire une erreur de segmentation
Marsh Posté le 15-12-2010 à 17:15:26
Effectivement je n'avais pas vu la fonction répété n fois, désolé.
Pourquoi, ou, en quoi le tableau n'est pas complètement initialisé lors des n-1 premiers appels ?
Merci beaucoup pour ton aide
Marsh Posté le 15-12-2010 à 17:55:01
Ben ta boucle est là pour initialiser colonnes pas colonnes, et tant que t'en es pas sorti, ton tableau n'est pas alloué à 100%.
Mais si tu sors ta fonction initialisation du for, ma remarque est caduque.
Marsh Posté le 15-12-2010 à 18:33:36
Ah d'accord je vois.
D'ailleurs voici le code que j'ai changé (il affiche le tableau de 0 mais plante lorsque qu'il doit afficher le tableau de 0 et 1).
Le main :
Code :
|
Le initialisation :
Code :
|
C'est bizarre sachant qu'avant le printf("\n" ), les deux lignes (de 0 puis de 0 et 1) s'affichait correctement.
Aurais-je oublier quelque chose ?
Il faut d'ailleurs que je revoie la fin de mon code, car le remplacement des 0 et 1 par . et o ne se fait pas.
Encore merci pour ton aide.
EDIT : le tableau de . et o s'affiche, mais c'est lors du remplacement de certain 0 par 1 que c'est pas bon, car les coordonnées ne corresponde pas forcément graphiquement ...
Marsh Posté le 15-12-2010 à 21:12:12
Mouai réfléchis un peu plus sur les coordonnées dans ton tableau, tu as des problèmes d'index là.
Marsh Posté le 15-12-2010 à 21:30:08
En fait c'est bon, j'ai rien dit.
Par contre, je bloque sur une solution idéale pour que l'utilisateur ressaisisse ses coordonnées de cellules vivantes (donc de 1) si jamais il donne des coordonnées hors plateau ou si il a déjà donné ces coordonnées ... Pourrais-tu m'aider stp ?
Sachant qu'on m'a conseillé de rajouter un bord au tableau rempli de 0 pour mieux voir la création par la suite de cellule, donc avec un tableau à n+2 lignes et m+2 colonnes. Mais c'est pas obligatoire.
EDIT : en fait c'est bon, jviens de changer le code
Marsh Posté le 16-12-2010 à 09:19:17
Par contre j'ai un autre soucis :
je veux faire apparaître les générations avec les tableaux modifiés après la première et le programme plante.
Voici le main :
Code :
|
Voici le initialisation :
Code :
|
Et le heredite :
Code :
|
Marsh Posté le 16-12-2010 à 09:28:43
Attention aux indices, exemple quand t'appelle nb_voisins avec i=0 et j=0
Marsh Posté le 16-12-2010 à 09:49:48
Aux indices ?
En fait je dois mettre dans mon main i=1 et i<n+1 sinon je suis hors tableau non ?
Marsh Posté le 17-12-2010 à 09:14:49
Si non bien le tp ? @DarkLord66 ?
Obtiens-tu l'image de fin ?
avec le fichier crypté ?
Marsh Posté le 15-12-2010 à 12:58:19
Bonjour,
j'ai un soucis avec un programme c qui reprend le jeu célèbre de Conway de la vie.
Je ne veut pas qu'on me donne le code ou un programme, juste qu'on m'aide à trouver et résoudre les erreurs qui est dans mon code.
Je vous remercie d'avance pour votre aide.
Pour la première partie, je dois créer 2 fichier .c (main et initialisation), ainsi qu'un header .h (initialisation) qui contient 4 prototypes de fonctions.
Voici le code du header :
Le but de la première fonction est en fait de faire taper à l'utilisateur 2 nombres entiers supérieurs (ou égaux à 1) et de les affecter aux variables passées en paramètres : c'est les dimensions du plateau de jeu.
Le but de la deuxième fonction est de prendre en paramètre un tableau à deux dimension (le plateau) et ses deux dimensions. Elle doit remplir le tableau de "0" et demander par la suite à l'utilisateur le nombre de cellules vivantes qu'il veut pour la première génération. Ensuite elle lui fait saisir les coordonnées de ces cellules en lui redemandant de saisir si elles ne sont pas bonnes : en dehors du plateau ou déjà saisi. Puis elle affecte la valeur "1" à ces cases.
La troisième fonction fait saisir un nombre supérieur ou égale à 1 qui sera le nombre de générations voulu.
La quatrième fonction prend en paramètre un tableau à deux dimensions de caractères (toujours le plateau) et ses dimensions. Elle doit afficher un "." pour les 0 (cellules mortes) et un "o" pour les 1 (cellules vivantes).
Les fonctions 1, 2 et 4 ne retournent rien et à aucun moment on doit dimensionner un tableau dans ses fonctions : c'est dans le main que l'on fait ça, une fois la fonction dimensionnement exécutée (donc j'ai du me tromper ici).
Voici mon fichier .c initialisation :
Et voici le main :
Une petite remarque, je n'ai pas encore fait le "redemander à l'utilisateur les coordonnées des cellules vivantes si jamais il a déjà rentrer ces coordonnées" et des fois je fais des tests d'affichages.
Encore merci d'avance pour votre aide.
Message édité par Profil supprimé le 15-12-2010 à 16:42:54