typedef int bool;
#include <stdio.h>
#include <string.h>
#define true 1
#define false 0
#define SIZE 25
void fill(char ARRAY[][SIZE], int ROW, int COLUMN);
main()
{
char ARRAY[SIZE][SIZE];
int i = 0, j, strln = 0;
int num1 = 0, num2 = 0;
bool wasPrinted = false;
printf("This program outputs a filled version of a shape that you enter.\nThe largest grid size is %d by %d.\n\n", SIZE,SIZE);
printf("Please enter a point in your shape where you would like to begin filling:\n");
printf("width = ");
scanf("%d", &num1);
printf("length = ");
scanf("%d", &num2);
printf("Please enter your shape outline now, using the * character\n");
gets(ARRAY[i]);
while (i < SIZE)
{
if (strcmp(gets(ARRAY[i]), "") == 0) break;
strln = (strlen(ARRAY[i]) > strln) ? strlen(ARRAY[i]) : strln;
i++;
}
fill(ARRAY, (strln / 2) - 1, (i / 2) - 1);
for (i = 0; i < SIZE; i++)
{
wasPrinted = false;
for (j = 0; j < SIZE; j++)
{
if (ARRAY[i][j] >= 32)
{
wasPrinted = true;
printf("%c", ARRAY[i][j]);
}
}
if (wasPrinted) printf("\n");
}
printf("\n");
system("pause");
}
void fill(char ARRAY[][SIZE], int num1, int num2)
{
int fillL, fillR, i;
int in_line = 1;
fillL = fillR = num1;
while (in_line)
{
ARRAY[num2][fillL] = '*';
fillL--;
in_line = (fillL < 0) ? 0 : (ARRAY[num2][fillL] == ' ');
}
fillL++;
in_line = 1;
while (in_line)
{
ARRAY[num2][fillR] = '*';
fillR++;
in_line = (fillR > SIZE - 1) ? 0 : (ARRAY[num2][fillR] == ' ');
}
fillR--;
for (i = fillL; i <= fillR; i++)
{
if (num2 > 0 && ARRAY[num2 - 1][i] == ' ')
{
fill(ARRAY, i, num2 - 1);
}
if (num2 < SIZE - 1 && ARRAY[num2 + 1][i] == ' ')
{
fill(ARRAY, i, num2 + 1);
}
}
}