F
Fred Nurk
Why am I getting the Subject of this discussion on lines 78, 80, 82, 84,
86, 88, 90 and 92? The problem statement is at http://sites.google.com/
site/xtheunknown0/hunt-a-word
#include <stdio.h>
#include <string.h>
#define MAX 100
void Nline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r--][c];
}
void NEline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r--][c++];
}
void Eline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r][c++];
}
void SEline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r++][c++];
}
void Sline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r++][c];
}
void SWline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r++][c--];
}
void Wline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r][c--];
}
void NWline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r--][c++];
}
int main() {
FILE *fin = fopen("huntin.txt", "r");
FILE *fout = fopen("huntout.txt", "w");
char grid[MAX][MAX], word[MAX], temp[MAX];
int height, width, i, j, k, nwords, wlen;
fscanf(fin, "%d %d", &height, &width);
for (i = 0; i < height; i++)
fscanf(fin, "%s", grid);
fscanf(fin, "%d", &nwords);
for (i = 0; i < nwords; i++) {
fscanf(fin, "%s", word);
wlen = strlen(word);
for (j = 0; j < height; j++)
for (k = 0; k < width; k++)
if (j-wlen+1>=0 && !strcmp(Nline(j, k,
wlen, grid, temp), word))
fprintf(fout, "%d %d N\n", j+1, k
+1);
else if (j-wlen+1>=0 && k+wlen-1<=width
&& !strcmp(NEline(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d NE\n", j+1, k
+1);
else if (k+wlen-1<=width && !strcmp(Eline
(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d E\n", j+1, k
+1);
else if (j+wlen<=height && k+wlen-1<=width
&& !strcmp(SEline(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d SE\n", j+1, k
+1);
else if (j+wlen<=height && !strcmp(Sline
(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d S\n", j+1, k
+1);
else if (k-wlen+1>=0 && j+wlen<=height
&& !strcmp(SWline(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d SW\n", j+1, k
+1);
else if (k-wlen+1>=0 && !strcmp(Wline(j,
k, wlen, grid, temp), word))
fprintf(fout, "%d %d W\n", j+1, k
+1);
else if (k-wlen+1>=0 && j-wlen+1>=0 && !
strcmp(NEline(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d NW\n", j+1, k
+1);
}
return 0;
}
86, 88, 90 and 92? The problem statement is at http://sites.google.com/
site/xtheunknown0/hunt-a-word
#include <stdio.h>
#include <string.h>
#define MAX 100
void Nline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r--][c];
}
void NEline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r--][c++];
}
void Eline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r][c++];
}
void SEline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r++][c++];
}
void Sline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r++][c];
}
void SWline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r++][c--];
}
void Wline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r][c--];
}
void NWline(int r, int c, int n, char grid[][MAX], char *word) {
int i;
for (i = 0; i < n; i++)
word = grid[r--][c++];
}
int main() {
FILE *fin = fopen("huntin.txt", "r");
FILE *fout = fopen("huntout.txt", "w");
char grid[MAX][MAX], word[MAX], temp[MAX];
int height, width, i, j, k, nwords, wlen;
fscanf(fin, "%d %d", &height, &width);
for (i = 0; i < height; i++)
fscanf(fin, "%s", grid);
fscanf(fin, "%d", &nwords);
for (i = 0; i < nwords; i++) {
fscanf(fin, "%s", word);
wlen = strlen(word);
for (j = 0; j < height; j++)
for (k = 0; k < width; k++)
if (j-wlen+1>=0 && !strcmp(Nline(j, k,
wlen, grid, temp), word))
fprintf(fout, "%d %d N\n", j+1, k
+1);
else if (j-wlen+1>=0 && k+wlen-1<=width
&& !strcmp(NEline(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d NE\n", j+1, k
+1);
else if (k+wlen-1<=width && !strcmp(Eline
(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d E\n", j+1, k
+1);
else if (j+wlen<=height && k+wlen-1<=width
&& !strcmp(SEline(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d SE\n", j+1, k
+1);
else if (j+wlen<=height && !strcmp(Sline
(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d S\n", j+1, k
+1);
else if (k-wlen+1>=0 && j+wlen<=height
&& !strcmp(SWline(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d SW\n", j+1, k
+1);
else if (k-wlen+1>=0 && !strcmp(Wline(j,
k, wlen, grid, temp), word))
fprintf(fout, "%d %d W\n", j+1, k
+1);
else if (k-wlen+1>=0 && j-wlen+1>=0 && !
strcmp(NEline(j, k, wlen, grid, temp), word))
fprintf(fout, "%d %d NW\n", j+1, k
+1);
}
return 0;
}