Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  find.cpp
Language: C/C++
Code:
#include <iostream>

using namespace std;
#define N 50

// We can search is all 8 directions
char DIR[8][2] = {
  {1,0}, {1,-1}, {1,1}, {0,-1}, {0,1}, {-1,0}, {-1,-1}, {-1,1}
};
// for toal array size
int m, n;

// method for finding word presence in the array in a specific direction
bool match(char CharMat[50][50], char word[], int i, int j, int dir_index)
{
  int k=0;
  for( ; i<m  && j<n  && i>=0  && j >=0  && word[k] != ''; i = i+DIR[dir_index][0],  j = j+DIR[dir_index][1], k++)
    if(toupper(word[k]) != toupper(CharMat[i][j]))
      return false;

  if (word[k] == '')
    return true;

  return false;  
}

void find_presence(char CharMat[50][50], char word[])
{
  for(int i=0; i<m; i++)
    for(int j=0; j<n; j++)
      if (toupper(CharMat[i][j]) == toupper(word[0]))
        for (int k=0; k<8; k++)
          if (match(CharMat, word, i, j, k))
          {
            cout << i+1 << " " << j+1 << endl;
            return;
          }
  cout << "'" << word << "' was not found in the grid" << endl;
}

int main()
{
  char CharMat[N][N];
  cin >> m;
  cin >> n;
  for (int i=0; i<m; i++)
    cin >> CharMat[i];
  
  int num_words;
  char word[N];
  cin >> num_words;
  for (int j=0; j<num_words; j++)
  {
    cin >> word;
    find_presence(CharMat, word);
  }
}

          
          
Comments: