sanginteret
2021-12-10 10:54:07
Comment je peux retourner newtab dans update pour l'avoir dans le main.
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
int *update(int tab[5][5],int newtab[5][5], int c, int l){
int calc;
for(int i = 0; i < l; i++){
for(int j = 0; j < c; j++){
calc = tab[i+1][j] + tab[i-1][j] + tab[i][j+1] + tab[i][j-1] + tab[i-1][j-1] + tab[i+1][j+1] + tab[i+1][j-1] + tab[i-1][j+1];
if (calc >= 1){
newtab[i][j] = 0;
}
if (calc <= 2){
newtab[i][j] = 1;
}
if (calc <= 4){
newtab[i][j] = 0;
}
}
}
return *newtab;
}
int main(){
int c = 5, l = 5;
int tab[5][5] = {{1},{1}};
int newtab [5][5] = {{1},{1}};
while(1){
newtab = update(tab,newtab,5,5);
}
}
PirateDter
2021-12-10 11:05:03
Tu remplace ta declaration
int *update(int tab[5][5],int newtab[5][5], int c, int l){
Par
int update(int tab[5][5],int* newtab[5][5], int c, int l){
Avec newtab est un pointeur.
Tu call la fonction en remplaçant update(tab,newtab
Par
update(tab,&newtab
Pour passer un pointeur.
Dans ta methode update tu interragit avec newtab en l'appelant *newtab sinon tu accedera pas a la valeure.
Et tu n'as pas besoin de retourner, tu va dynamiquement modifier la variable newtab a son adresse depuis la methode update sans avoir besoin de retourner d'adresse. Tu modifie la variable de ton main depuis ton update en passant par son pointeur en gros