i was asked to initilize a program with a defined shape and to create a function to fill its,
i chose a triangel and worked out how to fill it, the problem is at the end ,my return function throws me into an endless loop and i have no idea how to get out of it, the function suppose to return a filled array,it indeed dose that but i have no idea how to break the loop at the end.
the function must be recursive.
#include <stdio.h>
char Filler(char shape[][9],int start_colume,int start_line)
{
int i,j,n,m;
char nshp[5][9];
for(i=start_line;i<5;i++)//condition for filling the function
{
for(j=start_colume;j<9;j++)
{
if(shape[i][j]!='*')
shape[i][j]='|';
if(shape[i][j]=='*')
break;
}
Filler(shape,(start_colume)-1,(start_line)+1);//recursive rule
}
for(n=0;n<5;n++)//copying the created array into another array
{
for(m=0;m<9;m++)
nshp[n][m]=shape[n][m];
}
return nshp[5][9];//the endless loop
}
void main ()
{
char shape[5][9]={{' ',' ',' ',' ','*',' ',' ',' ',' ',},
{' ',' ',' ','*',' ','*',' ',' ',' ',},
{' ',' ','*',' ',' ',' ','*',' ',' ',},
{' ','*',' ',' ',' ',' ',' ','*',' ',},
{'*','*','*','*','*','*','*','*','*',}};
int i=0,j=0;
char nshap;
for(i;i<5;i++)
{
for(j;j<9;j++)
printf("%c",shape[i][j]);
printf("\n");
if(j=8)
j=0;
}
nshap = Filler(shape,4,1);
printf("%c",nshap);
printf("\n");
}
a little idiotic but I’m debugging this function for a hour or so, i tried to use pointers but i’m really bad with it.
You’ve got a recursive call to
Filler()in there but it doesn’t look like you actually need it. Do you? What’s the recursion termination condition?Also, the
nshplocal variable doesn’t seem too useful because you are copying theshapeintonshp, and then returning a single element from it (using an out of bounds index, as pointed out already).