rendered paste body#include <stdio.h>
#include <stdlib.h>
//balant yn says 4 seilirse floodfill fonksiyonunun kullanaca recursive fonksiyon.
//stack dolu olduu zaman hata veriyor.
void fill4(int **a,int r,int c, int nr, int nc ){
if (r <=0 && r < nr)//fonksiyonu dizinin satr ba ve sonundan snrlandrr.
{
if (c <= 0 && c < nc)//fonksiyonu dizinin stun ba ve sonundan snrlandrr.
{
if (a[r][c]=='E')
{
a[r][c]='P';
fill4(a, r-1 ,c , nr, nc);//st,
fill4(a, r ,c-1, nr, nc);//sol,
fill4(a, r ,c+1, nr, nc);//sa,
fill4(a, r+1 ,c , nr, nc);//alt iin fonksiyonu yeniden arr.
}
}
}
}
//balant yn says 8 seilirse floodfill fonksiyonunun kullanaca recursive fonksiyon.
//stack dolu olduunda hata veriyor.
void fill8(int **a, int r, int c, int nr, int nc ){
if (r <=0 && r < nr)//fonksiyonu dizinin satr ba ve sonundan snrlandrr.
{
if (c <= 0 && c < nc)//fonksiyonu dizinin stun ba ve sonundan snrlandrr.
{
if (a[r][c]=='E')
{
a[r][c]='P';
fill8(a, r-1, c-1, nr, nc);//st sol,
fill8(a, r-1, c , nr, nc);//st orta,
fill8(a, r-1, c+1, nr, nc);//st sa...
fill8(a, r , c-1, nr, nc);
fill8(a, r , c+1, nr, nc);
fill8(a, r+1, c-1, nr, nc);
fill8(a, r+1, c , nr, nc);
fill8(a, r+1, c+1, nr, nc);
}
}
}
}
int floodfill(int **a, int r, int c, int cn, int nr, int nc)
{
if(a[r][c]=='E')
{
if(cn==4)
{
fill4(a,r,c,nr,nc);
}
else
{
fill8(a,r,c,nr,nc);
}
}
else
{
if(a[r][c]='C')
{
printf("please choose an empty node. \n");
}
}
}
int main (void)
{
int cn,nc,nr;
int **nodes;
int i,j,r,c;
do
{
printf("Give The Connectivity Number.\n");
scanf("%d",&cn);
if ( (cn != 4) && (cn != 8))
printf("Please Enter 4 Or 8.\n");
}
while( (cn != 4) && (cn != 8) );
//matrisin satr ve stun saysn okur.
printf("The Number Of Rows :\n");
scanf("%d",&nr);
printf("The Number Of Colums:\n");
scanf("%d",&nc);
//matris iin alan aar:
nodes=(int**)malloc(sizeof(int*)*nr);
for(i=0;i<nr;i++)
{
nodes[i]=(int*)malloc(sizeof(char)*nc);
}
//.
//matristeki bo ve dolu noktalar kullancdan alr
for(i=0;i<nr;i++)
{
for(j=0;j<nc;j++)
{
printf("The Status Of Node(%d,%d): ",i,j);
scanf("%s",&nodes[i][j]);
}
}
//.
//label noktaal
noktaal:
//kullancdan doldurmak istedii blmden bir noktann indis deerleri alnr.
printf("Start Node: Row: ");
scanf("%d",&r);
printf("\t Column: ");
scanf("%d",&c);
//.
//noktann matrisin iinde olup olmadnn kontrol:
if((r<nr) && (c<nc))
{
floodfill(nodes , r , c , cn , nr , nc );
}
else
{
printf("fault: Chose a node in matris!");
goto noktaal;
}
//matrisi yazdrma;
for(i=0;i<nr;i++)
{
for(j=0;j<nc;j++)
{
printf("%s",nodes[i][j]);
}
}
//.
free(nodes);
return 0;
}