Bonjour,
Je débute en c++ et j'ai écris un petit programme reproduisant le jeu de la vie de Conway pour m’exercer.
A la compilation pas de soucis mais lorsque je l’exécute la console renvoie "Erreur de segmentation (core dumped)".
Je sais qu'il s'agit d'un problème de référencement mais je suis incapable de le trouver! Quelqu'un saurait-il m'aider?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 #include <iostream> #include <ctime> #include <cstdlib> using namespace std; void afficher(int grille[19][19]) //affiche la grille : si la cellule { //est vivante affiche O sinon # for(int i = 0; i<20; i++) { for (int j = 0; j<20; j++) { if (grille[i][j] == 1) cout<<"O"; else cout<<"#"; } cout<<endl; } } void initialiser(int grille[19][19]) //la grille est initialisée aléatoirement { int alea (0); for(int i = 0; i<20; i++) { for (int j = 0; j<20; j++) { alea = rand() % 2; if (alea == 0) grille[i][j] = 0; else grille[i][j] = 1; } } } void suivant(int grille[19][19]) { int tmp[19][19]; int count; bool chg(true); for(int i = 0; i<20; i++) // crée une copie de la grille car la grille est mutée { for(int j = 0; j<20; j++) { tmp[i][j]=grille[i][j]; } } for(int i=0; i<20; i++) { for (int j = 0; j<20; j++) { count = tmp[(i+19)%20][(j+19)%20] + //compte le nombre de cellules vivantes tmp[(i+19)%20][j%20] + tmp[(i+19)%20][(j+1)%20] + tmp[i%20][(j+19)%20] + tmp[i%20][(j+1)%20] + tmp[(i+1)%20][(j+19)%20] + tmp[(i+1)%20][j%20] + tmp[(i+1)%20][(j+1)%20]; if (count < 2) //Si il est inférieur a deux la cellule est morte {grille[i][j] = 0; chg = true;} else if (count > 2) //Sinon la cellule est vivante {grille[i][j] = 1; chg = true;} } } if(chg == false) //Renvoie un message si il ne se passe plus rien cout<<"grille stable"<<endl; } int main() { srand(time(0)); int grille[19][19]; char buffer; initialiser (grille); while (buffer == 'y') { suivant(grille); afficher(grille); cout<<"next?"<<endl; cin>>buffer; } return 0; }
Partager