C ++ Word Search - Использование заглавных букв - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь написать программу, которая берет найденные слова в поиске слов и использует их заглавные буквы, но мне очень трудно сравнивать мой файл головоломки с моим списком

Ниже "List1.txt "

dog
call
ball
small
fall
paw
saw
draw
log
joy
red
who
ink
led
rim
door

Ниже" Puzzle1.txt "

f   v   c   b   s   j   v   m   e   y
a   j   a   k   s   d   u   y   t   l
l   m   l   d   y   e   o   w   k   i
l   p   l   x   r   j   h   k   n   b
b   a   l   l   i   a   w   o   i   z
s   s   a   w   m   x   w   p   a   w
o   m   j   d   r   k   o   l   x   d
z   k   a   e   a   h   d   j   o   y
w   q   v   l   q   q   e   o   p   g
m   d   c   z   l   q   r   h   g   h

... И, наконец, ниже то, что у меня есть, но я так застрял

В первом цикле for, который предназначен для головоломки, я не могу заставить его правильно ввести список в массив 2d, он всегда просто заполняет массив тем, что последний символ видит.

Во-вторых, в третьем наборе циклов, где находится решающая часть, я совершенно не понимаю, как правильно сравнивать слова во всех направлениях.Моей первой мыслью было сравнить первые символы слов List1.txt с загадкой, пока я не нашел совпадение, а затем я смотрел в каждом направлении, эквивалентном длине слова List1, и смотрел, совпадет ли оно.

После того, как я понял, сколько разных вещей я испортил, я решил просто перезапустить решатель, используя другой метод, который я пытался начать строить ниже.Я пытался просмотреть массив 2d по длине за раз, длина - это длина слова List1, и посмотреть, было ли это совпадение вперед или назад.Если бы не я, я бы просто прошел один ряд и взял эти 3 или 4 символа, отбросив первую букву и добавив еще один в конец того, что я пытался сравнить.

Это привело меня к векторам!Я помню, как узнал о векторах, и я пытался их использовать, но опять застрял, растерялся и ошеломлен.Я нашел здесь несколько постов, которые мне немного помогли, но не достаточно.

На данный момент, мне действительно все равно, какой метод используется, если я надеюсь узнать что-то новое: DНадеюсь, я предоставил достаточно информации.

#include<conio.h>
#include<iostream>
#include<istream>
#include<string>
#include<fstream>
using namespace std;

void main() {
    ifstream in;
    ofstream out;
    string throwawaystr="", word[16];
    int counter = 0, counter2 = 0, rows = 10, columns = 10, buffer = 0;
    char charVar, arr[10][10];

    //-//-//-//-(       \/PUZZLE\/      )-//-//-//-//
    in.open("Puzzle1.txt");
    while (!in.eof()) {             //input 2d array
        in >> charVar;
        for (int y = 0; y < columns; y++) {
            for (int x = 0; x < rows; x++) {
                arr[x][y] = charVar;
            }
        }
    }
    in.close();
    cout << "Puzzle:" << endl;
    for (int y = 0; y < columns; y++) {
        for (int x = 0; x < rows; x++) {
            cout << arr[x][y];
        }
        cout << endl;
    }
    cout << endl;
    //-//-//-//-(       \/LIST\/        )-//-//-//-//
    in.open("List1.txt");
    while(!in.eof()){
        in >> word[counter2];
        counter2++;
    }
    in.close();
    cout << "List:" << endl;
    for (int x = 0; x < counter2; x++) {
        cout << word[x] << endl;
    }
    cout << endl;
    //-//-//-//-(       \/SOLVER\/      )-//-//-//-//   
    for (int z = 0; z < word[z].length(); z++) {            
        for (int y = 0; y < columns; y++) {
            for (int x = 0; x < rows; x++) {
                while (throwawaystr.length() >= word[z].length() && buffer > (columns - word[z].length())) {
                    throwawaystr += arr[x][(y+buffer+word[z].length())];

                }
            }
        }
    }
    system("pause");
}
...