Exemple 2 : Blob

text/x-c++src blob.cpp — 1.6 KB

Contenu du fichier

#include <iostream>

using namespace std;

#define MAX_Y 8
#define MAX_X 8
int main()
{
    int cpt,x,y;
    int grille[MAX_X][MAX_Y] = { 1,1,0,0,0,1,1,1,
                                 1,1,0,0,0,0,0,1,
                                 1,0,0,1,0,0,0,1,
                                 1,0,0,1,1,0,0,0,
                                 1,0,1,1,1,1,0,0,
                                 1,0,0,1,1,0,0,0,
                                 1,0,0,1,0,0,1,1,
                                 1,1,0,0,0,1,0,1   };

    int fig_cpt (int, int, int [MAX_X] [MAX_Y]);

    cout << "Voici la grille." <<endl << endl;
    for (int i=0; i< MAX_X; i++)
    {
        cout << "             " ;
        for (int j=0; j< MAX_Y; j++)
            cout << grille[i][j] << "  " ;
        cout << endl;
    }

    cout << endl << endl ;
    cout << "Entrer les coordonnees en X et en Y : ";
    cin >> x >> y;

    cpt = fig_cpt (x, y, grille);

    cout << "Le nombre de cellule dans la figure est ";
    cout << cpt << endl << endl;
}


int fig_cpt(int x, int y, int grille[MAX_X][MAX_Y])
{
    int compte;
    if (x<0 || (x > MAX_X -1) || y < 0 || (y > MAX_Y -1))
        compte = 0;
    else if (grille[x][y] == 0)  compte = 0;
    else
    {
        grille[x][y] = 0;
        compte = 1 + fig_cpt(x-1, y, grille) +
                 fig_cpt(x-1, y+1, grille) +
                 fig_cpt(x-1, y-1, grille) +
                 fig_cpt(x, y+1, grille) +
                 fig_cpt(x, y-1, grille) +
                 fig_cpt(x+1, y+1, grille) +
                 fig_cpt(x+1, y, grille) +
                 fig_cpt(x+1, y-1, grille) ;
    }
    return compte;
}