Sunteți pe pagina 1din 2

19./* obiectpo.

c0problema "fotografiei""determina numarul de obiecte dintr-o fot


ografie.Obiectele din fotografie sunt codificate cu 1,iar celelalte sunt 0.Porni
nd de la prima unitate determinata se cauta unitati adiacente pe cele 8 directii
,care sunt puse pe 0 eliminandu-se astfel obiectul identificat*/
#include <stdio.h>
#include <conio.h>
#define N 10
#define M 15
int F[N][M]={{0,0,0,0,0,0,0},
{0,1,0,1,0,1,0},
{0,0,0,0,0,0,0},
{0,1,0,0,1,0,0},
{0,0,1,0,0,1,0},
{0,0,1,1,0,1,0},
{0,0,0,0,0,0,0},};
int i,j,n=5,m=5;
void obiect(int i,int j, int F[N][M]){
if(F[i][j]==1){
F[i][j]=0;
obiect(i-1,j,F);
obiect(i-1,j+1,F);
obiect(i,j+1,F);
obiect(i+1,j+1,F);
obiect(i+1,j,F);
obiect(i+1,j-1,F);
obiect(i-1,j,F);
obiect(i,j-1,F);
obiect(i-1,j-1,F);
}
}
void main(void){
int il,ic,nr_ob=0;
clrscr();
for(ic=1;ic<=m;ic++){
F[0][ic]=0;
F[n+1][ic]=0;}
for(il=1;il<=m;il++){
F[il][0]=0;
F[il][m+1]=0;}
for(il=1;il<n;il++){
printf("\t");
for(ic=1;ic<m+2;ic++)
printf("%2d",L[il][ic]);
printf("\n\n"); }
printf("\nCoordonate obiecte(stanga-sus):\n");
do{ il=0;
do{il++;
ic=0;
do ic++;
while(ic<m+1&&F[il][ic]==0);}
while(il<n+1&&F[il][ic]==0);
if(F[il][ic]&&ic<<m+1&&il<n+1){
printf("\n\tObiect %d:(%d,%d)\n", nr_ob+1, il, ic);
obiect(il,ic,F);
nr_ob++;
}
}while(il<n+1||ic<m+1);
printf("\n\tNumar obiecte %i\n", nr_ob);
getch();}

S-ar putea să vă placă și