Mimic² BF3: Badass Under Fire | Bonjour a tous et a toutes je suis actuellement en train de faire un 'Jeu de la vie' pour un devoir.
je rentre mes fonction notamment une pour la création d'un tableau dynamique mais entre 2 fonctions mes valeurs changent sans que (ré)assigne les variables.
exemple ma hauteur je la met a 9 longueur aussi a 9
et bien quand je l'affiche elle passe a 2686720 pour la hauteur et 2686716 pour la longueur et ce peu importe le nombre que je met dans la variable
http://puu.sh/20hjU
Avez vous une idée de ce qu'il se passe a mes variable ?
Mon Main:
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include "Autoheader.h"
- int main()
- {
- int **plateau;
- int hauteur = 0;
- int longueur = 0;
- int B[9];
- int S[9];
- int i;
- int j;
- dimensionnement(&hauteur,&longueur);
- // Declaration Tableau Dynamique
- plateau = malloc(hauteur * sizeof(*plateau));
- for (i = 0; i < hauteur; i++)
- {
- plateau[i] = malloc(longueur * sizeof(**plateau));
- for(j = 0; j < longueur; j++)
- {
- plateau[i][j] = 0;
- }
- }
- printf("\t %d \n",hauteur);
- printf("\t %d \n",longueur);
- initialisation(&plateau,&hauteur,&longueur);
- affiche(&plateau,&hauteur,&longueur);
- affiche_fichier(&plateau,&hauteur,&longueur);
- saisie_B_M(&B[9]);
- saisie_S_M(&S[9]);
- nb_generation ();
- return 0;
- }
|
le .c de mon header
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include "Autoheader.h"
- void dimensionnement(int *hauteur, int *longueur)
- {
- printf("Entrez la resolution du plateau de jeu\n" );
- printf("Suivez bien cette regle, il ne peut y avoir une resolution negative\n\n" );
- //boucle pour avoir seulement une valeur sup a 1
- do
- {
- printf("Inscrivez la hauteur du tableau (nombres de Lignes) :\t" );
- scanf("%d", hauteur);
- }
- while (0 > hauteur);
- do
- {
- printf("Inscrivez la longueur du tableau (nombres de Colones) :\t" );
- scanf("%d", longueur);
- }
- while (0 > longueur);
- printf("\n\n" );
- }
- void initialisation(int **plateau,int hauteur,int longueur)
- {
- int h = hauteur;
- int l = longueur;
- int celluleactive;
- int comp_cellule_for;
- int buffer_activation_h;
- int buffer_activation_l;
- printf("\t %d \n",hauteur);
- printf("\t %d \n",longueur);
- printf("\t %d \n",h);
- printf("\t %d \n",l);
- printf("Veuillez entrer le nombre de celules vivantes dans la 1ere generation :\t" );
- scanf("%d", &celluleactive);
- for(comp_cellule_for = 0; comp_cellule_for < celluleactive; comp_cellule_for++)
- {
- printf("%d", h);
- do // coordonées de la cellule en hauteur
- {
- do
- {
- printf("A quelle ligne se trouve la cellule a activer ? :\t" );
- scanf("%d",&buffer_activation_h);
- }
- while (buffer_activation_h < 0);
- }
- while (buffer_activation_h > hauteur);
- do // coordonées de la cellule en longueur
- {
- do
- {
- printf("A quelle colonne se trouve la cellule a activer ? :\t" );
- scanf("%d", &buffer_activation_l);
- }
- while (buffer_activation_l < 0);
- }
- while (buffer_activation_l > longueur);
- plateau[--buffer_activation_h][--buffer_activation_l] = 1;
- }
- }
- int nb_generation(nb_gene)
- {
- do
- {
- printf("Veuillez entrez le nombre de generation desire \n" );
- printf("il ne peut etre inferieur a 0\n" );
- scanf("%d", &nb_gene);
- }
- while (nb_gene <= 0 );
- printf("\n\n" );
- }
- void affiche(int**plateau,int hauteur, int longueur)
- {
- int ia;
- int ja;
- for(ia=0;ia < hauteur;ia++)
- {
- for(ja=0; ja < longueur;ja++)
- {
- if (plateau[ia][ja]==1)
- {
- printf("o" ); //affiche des 'o' a la place des '1' du plateau
- }
- else
- {
- printf("." ); //affiche des '.' a la place des '0' du plateau
- }
- }
- }
- printf("\n\n" );
- }
- void affiche_fichier(int** plateau, int hauteur, int longueur)
- {
- int i,j;
- FILE * resultat = NULL;
- resultat = fopen("F:\\AutoMath\\Automath.txt","w+" );
- if (resultat != NULL) //Verification de l'ouverture
- {
- printf ("Le fichier Automath.txt a reussi son ouverture\n" );//Succes
- for(j=0;j<hauteur;j++)
- {
- for (i=0;i<longueur;i++)
- {
- if(plateau[i][j]==1)
- fputc('o', resultat);
- else
- fputc('.', resultat);
- }
- printf("\n" );
- }
- fclose(resultat);
- }
- else// Echec
- {
- printf("Erreur: Le fichier Automath.txt ne peut s'ouvrir" );
- system("PAUSE" );
- }
- printf("\n\n" );
- }
- void saisie_B_M(int B[9])
- {
- int b_moore[9];
- int compteur_moore= 0;
- int choix_moore;
- printf("Veuillez entrez les regles de naissances B \n" );
- printf("N'entrez que des 0 ou des 1 \n" );
- printf("0 = Non\n" );
- printf("1 = Oui\n\n" );
- for(compteur_moore= 0 ;compteur_moore<9; compteur_moore++)
- {
- do
- {
- printf("Une cellule morte ayant %d voisins dois t'elle vivre ? :\t", compteur_moore);
- scanf("%d", &choix_moore);
- b_moore[compteur_moore]=choix_moore;
- }
- while (choix_moore != 0 && choix_moore != 1);
- }
- printf("\n\n" );
- }
- void saisie_S_M(int S[9])
- {
- int s_moore[9];
- int compteur_moore_s= 0;
- int choix_moore_s;
- printf("Veuillez entrez les regles de survie S \n" );
- printf("N'entrez que des 0 ou des 1 \n" );
- printf("0 = Non\n" );
- printf("1 = Oui\n\n" );
- for(compteur_moore_s= 0 ;compteur_moore_s<9; compteur_moore_s++)
- {
- do
- {
- printf("Une cellule vivante ayant %d voisins dois t'elle survivre ? :\t", compteur_moore_s);
- scanf("%d", &choix_moore_s);
- s_moore[compteur_moore_s]=choix_moore_s;
- }
- while (choix_moore_s != 0 && choix_moore_s != 1);
- }
- printf("\n\n" );
- }
|
Mon header
Code :
- #ifndef AUTOMATH_H_INCLUDED
- #define AUTOMATH_H_INCLUDED
- void dimensionnement(int *hauteur, int *longueur);
- void initialisation(int **plateau,int hauteur,int longueur);
- void affiche(int **plateau,int hauteur,int longueur);
- void affiche_fichier(int **plateau, int hauteur, int longueur);
- void saisie_B_M(int B[9]);
- void saisie_S_M(int S[9]);
- int nb_generation ();
- #endif // AUTOMATH_H_INCLUDED
|
le compilateur me dit :
Code :
- F:\Auto\automath\main.c||In function 'main':|
- F:\Auto\automath\main.c|31|warning: passing argument 1 of 'initialisation' from incompatible pointer type [enabled by default]|
- F:\Auto\automath\Autoheader.h|5|note: expected 'int **' but argument is of type 'int ***'|
- F:\Auto\automath\main.c|31|warning: passing argument 2 of 'initialisation' makes integer from pointer without a cast [enabled by default]|
- F:\Auto\automath\Autoheader.h|5|note: expected 'int' but argument is of type 'int *'|
- F:\Auto\automath\main.c|31|warning: passing argument 3 of 'initialisation' makes integer from pointer without a cast [enabled by default]|
- F:\Auto\automath\Autoheader.h|5|note: expected 'int' but argument is of type 'int *'|
- F:\Auto\automath\main.c|32|warning: passing argument 1 of 'affiche' from incompatible pointer type [enabled by default]|
- F:\Auto\automath\Autoheader.h|6|note: expected 'int **' but argument is of type 'int ***'|
- F:\Auto\automath\main.c|32|warning: passing argument 2 of 'affiche' makes integer from pointer without a cast [enabled by default]|
- F:\Auto\automath\Autoheader.h|6|note: expected 'int' but argument is of type 'int *'|
- F:\Auto\automath\main.c|32|warning: passing argument 3 of 'affiche' makes integer from pointer without a cast [enabled by default]|
- F:\Auto\automath\Autoheader.h|6|note: expected 'int' but argument is of type 'int *'|
- F:\Auto\automath\main.c|33|warning: passing argument 1 of 'affiche_fichier' from incompatible pointer type [enabled by default]|
- F:\Auto\automath\Autoheader.h|7|note: expected 'int **' but argument is of type 'int ***'|
- F:\Auto\automath\main.c|33|warning: passing argument 2 of 'affiche_fichier' makes integer from pointer without a cast [enabled by default]|
- F:\Auto\automath\Autoheader.h|7|note: expected 'int' but argument is of type 'int *'|
- F:\Auto\automath\main.c|33|warning: passing argument 3 of 'affiche_fichier' makes integer from pointer without a cast [enabled by default]|
- F:\Auto\automath\Autoheader.h|7|note: expected 'int' but argument is of type 'int *'|
- ||=== Build finished: 0 errors, 9 warnings (0 minutes, 1 seconds) ===|
|
D'avance merci Mimic² Message édité par Mimic² le 10-02-2013 à 16:16:14
|