#include #include #include typedef struct { int row; int col; int number; char direct; } entry; typedef char answer[21]; int main () { entry starts[100]; char puzzle[22][22]; char filename[30]; char orient; ifstream infile; int r, c, len, size, one; int squareNumber = 0; int counter = 0; int square; int marked; answer aword; cout << "Enter puzzle file name: "; cin >> filename; infile.open(filename); infile >> size; for (c = 0; c < size + 2; c++) { puzzle[0][c] = '*'; puzzle[size+1][c] = '*'; } for (r = 0; r < size + 2; r++) { puzzle[r][0] = '*'; puzzle[r][size+1] = '*'; } for (r = 1; r <= size; r++) for (c = 1; c <= size; c++) infile >> puzzle[r][c]; for (r = 1; r <= size; r++) for (c = 1; c <= size; c++) { marked = 0; if (puzzle[r][c] != '*' && puzzle[r][c+1] != '*' && puzzle[r][c-1] == '*') { squareNumber++; marked = 1; starts[counter].row = r; starts[counter].col = c; starts[counter].number = squareNumber; starts[counter].direct = 'A'; counter++; } if (puzzle[r][c] != '*' && puzzle[r+1][c] != '*' && puzzle[r-1][c] == '*') { if (marked == 0) squareNumber++; starts[counter].row = r; starts[counter].col = c; starts[counter].number = squareNumber; starts[counter].direct = 'D'; counter++; } } while (infile) { infile >> square; infile >> orient >> aword; for (len = 0; len < counter; len++) if(starts[len].number == square && orient == starts[len].direct) break; r = starts[len].row; c = starts[len].col; for (one = 0; one < strlen(aword); one++) { if (orient == 'A') puzzle[r][c+one] = aword[one]; else puzzle[r+one][c] = aword[one]; } } infile.close(); for (r = 1; r <= size; r++) { for (c = 1; c <= size; c++) cout << puzzle[r][c]; cout << endl; } cout << endl; return 0; }