This commit is contained in:
Valentin Moguérou 2023-10-20 18:18:20 +02:00
parent 39c2fc307f
commit 94e9eda7f9

View File

@ -13,7 +13,7 @@ typedef enum jeton {
typedef struct colonne { typedef struct colonne {
int hauteur; int hauteur;
int hauteur_max; int capacite;
jeton* jetons; jeton* jetons;
} colonne; } colonne;
@ -26,7 +26,7 @@ void print_tab(jeton *tab, int n)
void print_colonne(colonne *col) void print_colonne(colonne *col)
{ {
print_tab(col->jetons, col->hauteur_max); print_tab(col->jetons, col->capacite);
} }
void init_zeros(jeton* ptr, int count) void init_zeros(jeton* ptr, int count)
@ -38,13 +38,13 @@ void init_zeros(jeton* ptr, int count)
} }
} }
colonne *creer_colonne(int hauteur_max) colonne *creer_colonne(int capacite)
{ {
colonne *col = malloc(sizeof(colonne)); colonne *col = malloc(sizeof(colonne));
col->jetons = malloc(hauteur_max*sizeof(jeton)); col->jetons = malloc(capacite*sizeof(jeton));
init_zeros(col->jetons, hauteur_max); init_zeros(col->jetons, capacite);
col->hauteur_max = hauteur_max; col->capacite = capacite;
col->hauteur = 0; col->hauteur = 0;
return col; return col;
@ -52,24 +52,22 @@ colonne *creer_colonne(int hauteur_max)
bool agrandir_colonne(int diff_taille, colonne *col) bool agrandir_colonne(int diff_taille, colonne *col)
{ {
printf("J'appelle realloc.\n"); printf("J'appelle realloc(%p, %d + %d)\n", col->jetons, col->capacite + diff_taille);
jeton* jetons_nouv = realloc(col->jetons, col->hauteur_max + diff_taille); jeton *jetons_nouv = realloc(col->jetons, col->capacite + diff_taille);
if (jetons_nouv == NULL) if (jetons_nouv == NULL)
return false; // allocation impossible, on garde col->jetons tel quel return false; // allocation impossible, on garde col->jetons tel quel
col->jetons = jetons_nouv;
// on met des zéros dans la partie nouvellement attribuée // on met des zéros dans la partie nouvellement attribuée
init_zeros(jetons_nouv + col->hauteur_max, diff_taille); init_zeros(col->jetons + col->capacite, diff_taille);
printf("vérif travail init_zeros\n"); printf("vérif travail init_zeros\n");
print_tab(jetons_nouv, col->hauteur_max + diff_taille); print_tab(col->jetons, col->capacite + diff_taille);
// free est appelé par realloc et les éléments sont copiés par realloc // free est appelé par realloc et les éléments sont copiés par realloc
col->hauteur_max += diff_taille; col->capacite += diff_taille;
col->jetons = jetons_nouv;
//print_colonne(col);
return true; return true;
@ -78,7 +76,7 @@ bool agrandir_colonne(int diff_taille, colonne *col)
bool ajouter_jeton(jeton j, colonne *col) bool ajouter_jeton(jeton j, colonne *col)
{ {
printf("%d", col->hauteur); printf("%d", col->hauteur);
if (col->hauteur >= col->hauteur_max) if (col->hauteur >= col->capacite)
{ {
if (!agrandir_colonne(Y_BLOCK_SIZE, col)) if (!agrandir_colonne(Y_BLOCK_SIZE, col))
return false; return false;