170k views
4 votes
This program builds on the program developed in part

1. This program will read a word search from the provided file name. you will develop six methods, (1) a method to search for a word placed in a horizontal direction(rows) in the word search,
(2) a method to search for a word placed in a vertical direction (columns) in the word search,
(3) a method to search for a word placed in a diagonal direction in the word search, and
(4) test methods for the horizontal, vertical, and diagonal search methods.

User Jevonne
by
4.5k points

1 Answer

1 vote

Answer:

The solution is in C++

Step-by-step explanation:

// C++ programs to search a word in a 2D grid

#include<bits/stdc++.h>

using namespace std;

// Rows and columns in given grid

#define R 3

#define C 14

// For searching in all 8 direction

int x[] = { -1, -1, -1, 0, 0, 1, 1, 1 };

int y[] = { -1, 0, 1, -1, 1, -1, 0, 1 };

// This function searches in all 8-direction from point

// (row, col) in grid[][]

bool search2D(char grid[R][C], int row, int col, string word)

{

// If first character of word doesn't match with

// given starting point in grid.

if (grid[row][col] != word[0])

return false;

int len = word.length();

// Search word in all 8 directions starting from (row,col)

for (int dir = 0; dir < 8; dir++)

{

// Initialize starting point for current direction

int k, rd = row + x[dir], cd = col + y[dir];

// First character is already checked, match remaining

// characters

for (k = 1; k < len; k++)

// If all character matched, then value of must

// be equal to length of word

if (k == len)

return true;

}

return false;

}

// Searches given word in a given matrix in all 8 directions

void patternSearch(char grid[R][C], string word)

{

// Consider every point as starting point and search

// given word

for (int row = 0; row < R; row++)

for (int col = 0; col < C; col++)

if (search2D(grid, row, col, word))

cout << "pattern found at " << row << ", "

<< col << endl;

}

// Driver program

int main()

{

char grid[R][C] = {"GEEKSFORGEEKS",

"GEEKSQUIZGEEK",

"IDEQAPRACTICE"

};

patternSearch(grid, "GEEKS");

cout << endl;

patternSearch(grid, "EEE");

return 0;

}

User GrandMarquis
by
4.6k points