Как вывести индексный номер элемента массива?

Поэтому я выполняю упражнение, в котором я должен попросить пользователя ввести количество блинов, которые съели 10 человек, распечатать, кто съел больше всего блинов, а затем организовать список от самого большого до самого маленького, в основном я должен распечатать:

Человек 3: съел 10 блинов, Человек 5: съел 9 блинов, Человек 8: съел 8 блинов

Однако после использования пузырьковой сортировки я не могу сопоставить человека с правильным значением, потому что пузырьковая сортировка меняет их! Кто-нибудь знает какой-нибудь способ исправить это? Например, есть ли другой способ организовать значения в массиве, не используя пузырьковую сортировку?

void getPancakes()
{
int x = 0;
int temp;
for(int y = 0; y < 10; y++)
{
++x;
cout << "How many pancakes did person " << x << " eat?" << endl;
cin >> pancakes[y];
}
}

void displayArray(int theArray[],int sizeOfArray)
{
int temp;
int i,j;
int q = 10;
for(i = 0; i <= sizeOfArray - 1 ; i++)
{
for(j = i+1 ; j < sizeOfArray ; j++)
{
if(theArray[i] < theArray[j])
{
temp = theArray[i];
theArray[i] = theArray[j];
theArray[j] = temp;
}
}
}
cout << endl;
for(i = 0; i < 10; i++)
cout << "Person " << i+1 << " ate " << theArray[i] << " pancakes" << endl;
}

2

Решение

Как сказал Коди, вам придется хранить оба значения. Как указали @HgMs, вы могли бы вы класс или struct, который является классом только с открытыми членами данных. Вот пример:

struct person{
int id;
int pancakes;
};

int main(){

const int totalPeople = 10;
person personArray[totalPeople];

for (int i = 0; i < totalPeople; ++i){
cout << "How many pancakes did person " << i << " eat? ";
personArray[i].id = i;
cin >> personArray[i].pancakes;
}

for (int i = 0; i < totalPeople; ++i){
cout << "id: " << personArray[i].id << "\t" << "Pancakes eaten: " << personArray[i].pancakes << endl;
}

return 0;
}

Затем вы можете перебрать массив и посмотреть, сколько блинов съел каждый человек, используя '.' чтобы получить доступ к собственности.

РЕДАКТИРОВАТЬ: Пузырьковая сортировка будет работать нормально.

2

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


По вопросам рекламы [email protected]