6b8 #include "tabmanip.h" #include "iostream.h" void lecture_tableau (TabTD tableau) { /* Fonction lisant au clavier la configuration initiale, demandant l'etat de chaque case */ for (int i = 0; i < MAXX; ++i) { cout << "Couche:" << i << " "; for (int j = 0; j < MAXY; ++j) { cout << "Ligne:" << j << endl; for (int k = 0; k < MAXZ; ++k) cin >> tableau[i][j][k]; } } } void affichage_tableau (TabTD tableau) { /* Fonction affichant a l'ecran l'etat du tableau 3D */ for (int i = 0; i < MAXX; ++i) { for (int j = 0; j < MAXY; ++j) { for (int k = 0; k < MAXZ; ++k) cout << tableau[i][j][k] << " "; cout << endl; } cout << endl; } } int occ (TabTD tableau, int pos_x, int pos_y, int pos_z) { /* Cette fonction compte le nombre d'organismes presents dans les cases adjacentes */ int inf_x, inf_y, inf_z, sup_x, sup_y, sup_z, sum = 0; // Pour ce faire, on trouve l'intervale a tester en verifiant si la case centrale se trouve sur une face ou une arrete. if (pos_x > 0) inf_x = pos_x - 1; else inf_x = pos_x; if (pos_y > 0) inf_y = pos_y - 1; else inf_y = pos_y; if (pos_z > 0) inf_z = pos_z - 1; else inf_z = pos_z; if (pos_x < MAXX) sup_x = pos_x + 1; else sup_x = pos_x; if (pos_y < MAXY) sup_y = pos_y + 1; else sup_y = pos_y; if (pos_z < MAXZ) sup_z = pos_z + 1; else sup_z = pos_z; // Boucles testant toutes les cases adjacentes for (int i = inf_x; i <= sup_x; ++i) for (int j = inf_y; j <= sup_y; ++j) for (int k = inf_z; k <= sup_z; ++k) { // Ajoute 1 si la case contient un organisme ET n'est pas la case centrale. if (tableau[i][j][k] && (i != pos_x || j != pos_y || k != pos_z)) sum++; } return sum; } 0