All pastes #1287684 Raw Edit

jnmbk

public text v1 · immutable
#1287684 ·published 2008-12-17 14:07 UTC
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;
}