Advertisement
Guest User

Untitled

a guest
Mar 26th, 2015
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4. #define TAILLE 10
  5. void init_tab(int (*tab)[10][10]); //initialisation du tableau
  6. void aff_tab(int (*tab)[10][10]); //affichage du tableau
  7. int num(int i, int j, int (*tab)[10][10]); //comptage du nombre de voisins vivants/morts
  8. void cel_vivante(int* cellule, int num); //changement des cellules en fonction du nb voisins
  9. void gen(int (*tab)[10][10]); //generation suivante
  10. #define VIVANTE 1
  11. #define MORTE 0
  12. int main()
  13. {
  14. int tab[10][10];
  15. srand(time(NULL));
  16. init_tab(&tab);
  17. aff_tab(&tab);
  18. gen(&tab);
  19. aff_tab(&tab);
  20. return 0;
  21. }
  22. void init_tab(int (*tab)[10][10])
  23. {
  24. int i, j;
  25. for (i = 0; i < 10; ++i) {
  26. for (j = 0; j < 10; ++j) {
  27. if((rand()%100) < 20) {
  28. (*tab)[i][j] = VIVANTE;
  29. } else {
  30. (*tab)[i][j] = MORTE;
  31. }
  32. }
  33. }
  34. }
  35. void aff_tab(int (*tab)[10][10])
  36. {
  37. int i, j;
  38. for (i = 0; i < 10; ++i) {
  39. for (j = 0; j < 10; ++j) {
  40. if ((*tab)[i][j] == VIVANTE) {
  41. printf("0" );
  42. } else {
  43. printf("-" );
  44. }
  45. }
  46. printf("\n" );
  47. }
  48. printf("\n" );
  49. }
  50. #define MODT(i) ((10 + (i)) % 10)
  51. int num(int i, int j, int (*tab)[10][10])
  52. {
  53. return (*tab)[MODT(i-1)][MODT(j-1)] + (*tab)[MODT(i-1)][MODT(j)]
  54. + (*tab)[MODT(i-1)][MODT(j+1)] + (*tab)[MODT(i)][MODT(j-1)]
  55. + (*tab)[MODT(i)][MODT(j+1)] + (*tab)[MODT(i+1)][MODT(j-1)]
  56. + (*tab)[MODT(i+1)][MODT(j)] + (*tab)[MODT(i+1)][MODT(j+1)];
  57. }
  58. void cel_vivante(int* cellule, int num)
  59. {
  60. if (*cellule == VIVANTE) {
  61. if ((num <= 1) || (num >=4)) {
  62. *cellule = MORTE;
  63. }
  64. } else {
  65. if (num == 3) {
  66. *cellule = VIVANTE;
  67. }
  68. }
  69. }
  70. void gen(int (*tab)[10][10])
  71. {
  72. int i,j;
  73. for(i = 0; i < 10; ++i) {
  74. for (j = 0; j < 10; ++j) {
  75. cel_vivante(&(*tab)[i][j], num(i,j,tab)); //on change la cellule si elle satisfait les conditions
  76. }
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement