ошибка c2109: нижний индекс требует массив или указатель типа 5

0

Я столкнулся с незначительной проблемой в отношении цикла for и массива, и я надеюсь, что смогу получить некоторую помощь. В первой функции использование цикла for для вызова каждого значения функции работает нормально. Однако во второй функции я получаю сообщение об ошибке Visual Studio, в которой указано, что "для индекса требуется массив или тип указателя". Что я делаю неправильно здесь, что вызывает эту ошибку?

Целью этой программы является поиск в txt файле книг, пропуская строки между записями, выяснение количества записей в файле и их местонахождения и распечатка деталей каждой записи.

void bookSearch(string id) {
    ifstream fbooks;

    string item = " ", entry = " ";

    int resultLocation[30];

    int searchType = 0;

    fbooks.open("books.txt");

    cout << "Welcome to the Book Search System, " << id << ".\n"
        << "What do you wish to search the registry by?\n"
        << "1. ISBN Number\n" << "2. Author\n" << "3. Title\n";

    while (searchType<1 || searchType>3) {
        cin >> searchType;

        if (searchType<1 || searchType>3) {
            displayMessage(0);

        }
    }

    getline(cin, item);

    for (int x = 0; x <= 30; x++) {
        for (int y = 0; y < searchType; y++)
            getline(fbooks, entry);

        if (entry == item)
            resultLocation[x] = 1;
        else
            resultLocation[x] = 0;

        for (int z = 0; z < 5; z++)
            getline(fbooks, entry);
    }

    resultPrint(resultLocation, id);
}


void resultPrint(int resultLocation, string id){
    int resultNum = 0;

    string entry = "";

    ifstream fbooks;

    fbooks.open("books.txt");

    for (int a = 0; a <= 30; a++) {
        if (resultLocation == 1)
            resultNum++;
    }

    if (resultNum > 0) {
        cout << endl << "There are " << resultNum << " entries in the database matching that criteria.\n";

        for (int a = 0; a <= 30; a++){
            if (resultLocation[a] == 1) { //The a in this line is marked with the error
                for (int b = 0; b <= 2; b++) {
                    getline(fbooks, entry);
                    cout << entry;
                }
            }
        }
    }

    else
        cout << endl << "There are no entries in the database matching that criteria.\n";
}
  • 0
    void resultPrint(int* /*<<<*/ resultLocation, string id)
  • 0
    А также if (resultLocation[a] == 1) .
Теги:
arrays
for-loop
function
visual-studio-2013

1 ответ

0
Лучший ответ

resultLocation - целое число, поэтому вы не можете использовать operator[] на нем (кроме первого "индекса"). Похоже, вы хотели сделать это массивом:

void resultPrint(int resultLocation[], string id);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню