Page 43 - MATINF Nr. 9-10
P. 43
Algoritmul fill s , i aplicat , ii 43
void cit (){
int i,j;
fin >>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
fin >>a[i][j];
}
void fill(int i, int j){
int k,n,in ,jn;
a[i][j] = 0;
for(k=0;k<8; k++){ // deplasarea in cele 8 directii
in = i + dl[k];
jn = j + dc[k];
if(in >=1 && in <=m && jn >=1 && jn <=n && a[in][jn] == 1)
fill(in ,jn);
}
}
void afis (){
int i,j;
for(i=1;i<=m;i++){
for(j=1;j<=n;j++)
fout <<a[i][j]<<" ";
fout <<endl;
}
}
int main (){
cit ();
// determinam x0 , y0
int i,j;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(a[i][j]==1){
x0 = i; i=m+1;
y0 = j; j=n+1;
}
fill(x0 ,y0); // stergem obiectul
afis ();
return 0;
}
4 Determinarea num˘arului de obiecte dintr-o fotografie
Se d˘a o fotografie alb negru codificat˘a printr-un tablou bidimensional cu m linii, n coloane s , i
elemente 0, 1 (0 – pixel alb, 1 – pixel negru). Fotografia cont , ine obiecte ca ˆın problema din
Sect , iunea 3. Determinat , i num˘arul de obiecte cont , inute de fotografie. Dimensiunile tabloului
bidimensional s , i elementele lui se dau ˆın fis , ierul foto2.in. Num˘arul de obiecte se va scrie ˆın
fis , ierul foto2.out.
Exemplu
foto2.in
6 8
1 0 0 0 0 1 1 0
0 0 0 0 0 1 1 0
1 0 0 0 0 0 0 1