Почему строки из текстового файла не добавляются в мой массив строк? - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть программа, которая должна принимать Dictionary.txt, который содержит 200 отдельных строк, по одной строке на строку, и хэшировать каждую строку в массив. Затем я беру введенную пользователем строку и пытаюсь найти эту строку в моем недавно заполненном массиве. Программа использует хеш-функцию по модулю для получения индекса массива для каждой строки и должна читать файл .txt построчно. На данный момент программа выполняется без ошибок, но массив полностью пуст после попытки чтения в строках.

Я пробовал использовать функцию getline, а также file >> input.

РЕДАКТИРОВАТЬ : мой файл не открывался правильно, поэтому я заменил URL-адрес в моем методе file.open () на C: / прямой URL вместо использованиятот, который я включил в свой проект Visual Studio.

int wordFinder(fstream& file, string word) {
    string Table[200];
    for (int i = 0; i < 200; i++) {
        //modulo hashing using size of array
        int index = i % 200;
        //collision
        if (!(Table[index].empty())) {
            int count = 0;
            do {
                index = (index + 1) % 200;
                count++;
            } while ((!(Table[index].empty())) && (count < 200));//while the current position is occupied and count is less than the size of the array
            getline(file, Table[index], '\n');//take string from file and put it into the table array
            cout << "Collision " << Table[index]<< endl;
        }
        //no collision
        else {
            cout << "No Collision " << Table[index]<<index<< endl;
            getline(file, Table[index], '\n');//take string from file and put it into the table array
        }
    }
    //find string if in array
    for (int i = 0; i < 200; i++) {
        if (Table[i].compare(word) == 0) {
            return 1;
        }
    }
    //print table values
    for (int i = 0; i < 200; i++) {
        cout << Table[i] << endl;
    }
    return 0;
}

Ожидаемый результат - программа вернет 1, если слово найдено, или 0, если не найдено. Следует также распечатать массив значений, каждый индекс имеет отдельное слово из файла .txt. На данный момент программа всегда возвращает 0, потому что массив заканчивается полностью пустым, и поэтому программа выводит кучу пробелов.

1 Ответ

0 голосов
/ 11 ноября 2019

Мой файл не открывался правильно, поэтому я заменил URL-адрес в моем методе file.open () на прямой C: /, вместо того, чтобы использовать тот, который был включен в мой проект Visual Studio. Это сработало после того, как я сделал это изменение.

...