Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <time.h>
- #define TAILLE 10
- void init_tab(int (*tab)[10][10]); //initialisation du tableau
- void aff_tab(int (*tab)[10][10]); //affichage du tableau
- int num(int i, int j, int (*tab)[10][10]); //comptage du nombre de voisins vivants/morts
- void cel_vivante(int* cellule, int num); //changement des cellules en fonction du nb voisins
- void gen(int (*tab)[10][10]); //generation suivante
- #define VIVANTE 1
- #define MORTE 0
- int main()
- {
- int tab[10][10];
- srand(time(NULL));
- init_tab(&tab);
- aff_tab(&tab);
- gen(&tab);
- aff_tab(&tab);
- return 0;
- }
- void init_tab(int (*tab)[10][10])
- {
- int i, j;
- for (i = 0; i < 10; ++i) {
- for (j = 0; j < 10; ++j) {
- if((rand()%100) < 20) {
- (*tab)[i][j] = VIVANTE;
- } else {
- (*tab)[i][j] = MORTE;
- }
- }
- }
- }
- void aff_tab(int (*tab)[10][10])
- {
- int i, j;
- for (i = 0; i < 10; ++i) {
- for (j = 0; j < 10; ++j) {
- if ((*tab)[i][j] == VIVANTE) {
- printf("0" );
- } else {
- printf("-" );
- }
- }
- printf("\n" );
- }
- printf("\n" );
- }
- #define MODT(i) ((10 + (i)) % 10)
- int num(int i, int j, int (*tab)[10][10])
- {
- return (*tab)[MODT(i-1)][MODT(j-1)] + (*tab)[MODT(i-1)][MODT(j)]
- + (*tab)[MODT(i-1)][MODT(j+1)] + (*tab)[MODT(i)][MODT(j-1)]
- + (*tab)[MODT(i)][MODT(j+1)] + (*tab)[MODT(i+1)][MODT(j-1)]
- + (*tab)[MODT(i+1)][MODT(j)] + (*tab)[MODT(i+1)][MODT(j+1)];
- }
- void cel_vivante(int* cellule, int num)
- {
- if (*cellule == VIVANTE) {
- if ((num <= 1) || (num >=4)) {
- *cellule = MORTE;
- }
- } else {
- if (num == 3) {
- *cellule = VIVANTE;
- }
- }
- }
- void gen(int (*tab)[10][10])
- {
- int i,j;
- for(i = 0; i < 10; ++i) {
- for (j = 0; j < 10; ++j) {
- cel_vivante(&(*tab)[i][j], num(i,j,tab)); //on change la cellule si elle satisfait les conditions
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement