сбой программы при сортировке пузырьков?

            int sortAtt2,compare=0,counter=0;
string tempTitle;
for(int t=0; t<MAX_BOOKS; t++)
{
for(int i=0; i<MAX_BOOKS; i++)
{
compare=(books[i+1].bookTitle).compare(books[i].bookTitle);
if(compare>0)
{
tempTitle=books[i].bookTitle;
books[i].bookTitle=books[i+1].bookTitle;
books[i+1].bookTitle=tempTitle;

}
}
}

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

0

Решение

Вне доступа. Вы получаете доступ books[i+1] в цикле, где i рассчитывает до MAX_BOOKS - 1я получаю доступ books[MAX_BOOKS] — один конец конца массива с MAX_BOOKS элементы.

3

Другие решения

Если у вас MAX_BOOKS 8.

Book books[MAX_BOOKS];

И ты зациклишься вот так.

for(int i=0; i<MAX_BOOKS; i++)
{
books[i+1];
}

Что происходит, когда i == 7?

1