[C] Aide avec des matrix

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);
}

}

MoiseLeTrois
2021-12-10 11:03:50

Elle est le monde

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

PirateDter
2021-12-10 11:06:09

Par ex dans update,
if (calc >= 1){
newtab[i][j] = 0;
}
Devient
if (calc >= 1){
*newtab[i][j] = 0;
}

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    Partenaire: JVFlux
    Ce site n'est pas associé à Jeuxvideo.com ou Webedia. Nous utilisons seulement des archives publiques.
    Il est inutile de me spammer par e-mail pour supprimer un topic. Au contraire, en conséquence, je mettrais votre topic dans le bloc ci-dessous.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.