Рассмотрим следующий список:Сортировка нескольких связанных массивов в C++
Name Price(per kg) Weight(in kg)
rice1 40 20
rice2 50 27
rice3 35 24
Я хочу все типы риса сортируются в зависимости от их стоимости. Итак, я сортирую их.
new sorted price: 35 40 50
Теперь я распечатать их и выход, как показано ниже:
Name Price Weight
rice1 35 20
rice2 40 27
rice3 50 24
Но это не то, что я хотел. Я хотел, чтобы напечатать как это:
Name Price Weight
rice3 35 24
rice1 40 20
rice2 50 27
так, проблема в том, что я получаю значение в отсортированном списке, но не имена и веса. Я хочу, чтобы все отсортировано по стоимости. Как я могу это сделать?
Я написал следующий код. Но не уверен, что делать дальше.
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
class treasure
{
public:
std::string name[100];
double value[100];
double weight[100];
};
int itemNumber, totalWeight, i;
treasure item;
std::cout << "Enter total item weight(in kg): " << std::endl;
std::cin >> totalWeight;
std::cout << std::endl <<"Enter total item number: " << std::endl;
std::cin >> itemNumber;
//take item name, item value, item weight
for(i = 0; i < itemNumber; i++)
{
std::cout << std::endl << "Enter item name: " << "\t" << "Enter item value(per kg): " << "\t" << "Enter item weight(in kg): " << std::endl;
std::cin >> item.name[i] >> item.value[i] >> item.weight[i];
}
//sort items according to given value
std::sort(item.value, item.value + itemNumber);
//print sorted list
for(i = 0; i < itemNumber; i++)
{
std::cout << std::endl << std::endl << "Item name: " << "\t" << "Item value(per kg): " << "\t" << "Item weight(in kg): " << std::endl;
std::cout << item.name[i] << "\t\t" << item.value[i] << "\t\t\t" << item.weight[i] << std::endl;
}
return 0;
}
Используйте массив структур, а не в структуры массивов. Определите функцию сравнения для структуры. – molbdnilo
Можете ли вы объяснить немного больше? Я имею в виду, какова была бы идея? – Insane