Ошибка при выводе индексов массива
Сделала функцию для формирования индексов строк (по возрастанию), должно получиться так:
2. Пушкин А.С. «Евгений Онегин»
5. Тургенев И.С. «Отцы и дети»
1. Логинов С.В. «Свет в окошке»
2. Пушкин А.С. «Евгений Онегин»
3. Стругацкий Б.Н., Стругацкий А.Н. «Понедельник начинается в субботу»
6. Янссон Т.С. «Волшебная зима»
5. Тургенев И.С. «Отцы и дети»
4. Толстой Л.Н. «Война и мир»
то , что получилось у меня :
1 Пушкин А.С. <Евгений Онегин>
5 Тургенев И.С. <Отцы и дети>
0 Логинов С.В. <Свет в окошке>
1 Пушкин А.С. <Евгений Онегин>
3 Стругацкий Б.Н., Стругацкий А.Н. <Понедельник начинается в субботу>
7 Янссон Т.С. <Волшебная зима>
5 Тургенев И.С. <Отцы и дети>
4 Толстой Л.Н. <Война и мир>
Так , archive.size()- это размер массива векторов , в каждом векторе какой-то русский текст, k - обозначает номер строки (по алфавиту) , numbers[i] - это вектор с числами , ему присваивается номер (для дальнейшего вывода на экран ) Цикл сравнивает строчки , и соответственно формирует индексы для них (если равные строки , то индексы равны)
P.S Проблема в том ,что цикл может сравнивать i-ую строчку с j-ой несколько раз(в том случае если будет найдена строчка , равная j-ой) и k увеличивается на единицу несколько раз , что неправильно . Короче говоря если мы 1) находим i-ый элемент и он больше j-го элемента, 2) этот j-ый элемент равен какому то другому элементу(строчке , назовем p) , то потом , когда встретим p элемент , мы уже не должны сравнивать i-ый элемент с p и прибавлять единицу к номеру k
for (int i = 0; i < archive.size(); i++)
{
k = 1;
for (int j = 0; j < i; j++)
{
if (archive[i]>archive[j])
k++;
}
for (int j = i + 1; j < archive.size(); j++)
{
if (archive[i]>archive[j])
k++;
}
numbers[i] = k;
}