Нужно сделать сортировку двух массивов одновременно (товары и цены). Сортируется цена по убыванию, а вместе с ней и товары. Функция sort
выдает ошибку выполнения. Помогите исправить.
struct Obj
{
public string value1;
public int value2;
}
static void Main(string[] args)
{
string[] Products = new string[4] { "Meat", "Bread", "Milk", "Chocolate" };
int[] Prices = new int[4] { 25, 4, 10, 16 };
Obj[] objs = new Obj[4];
for (int i = 0; i < 4; i++)
Console.WriteLine(Products[i] + "\n" + Prices[i] + "\n\n");
for (int i = 0; i < 4; i++)
{
objs[i] = new Obj();
objs[i].value1 = Products[i];
objs[i].value2 = Prices[i];
}
Array.Sort(objs);
for (int i = 0; i < 4; i++)
{
Products[i] = objs[i].value1;
Prices[i] = objs[i].value2;
}
for (int i = 0; i < 4; i++)
Console.WriteLine(Products[i] + "\n" + Prices[i] + "\n\n");
}
Как Sort с одним параметром будет сравнивать структуры?
Ему нужно помочь, добавив функцию сравнения (делегат) примерно так:
Array.Sort(objs, new Comparison<Obj>((a, b) => a.price.CompareTo(b.price)));
(ideone)
Bread 4
Milk 10
Chocolate 16
Meat 25
Вообще, сама идея - создать структуру данных, объединяющую название и цену продукта - правильная.
Только я бы именования изменил:
struct Product
{
public string Name;
public int Price;
}
Однако ваш вопрос звучит так:
сделать сортировку двух массивов одновременно
Это делается элементарно использованием перегрузки метода Array.Sort, которая принимает на вход два массива:
string[] products = new string[4] { "Meat", "Bread", "Milk", "Chocolate" };
int[] prices = new int[4] { 25, 4, 10, 16 };
Array.Sort(prices, products);
for (int i = 0; i < products.Length; i++)
Console.WriteLine(products[i] + " " + prices[i]);
Первый массив будет отсортирован по возрастанию, а элементы второго переставлены в соответствии с первым.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно сделать реферальную систему в Telegram BotПользователи будут переходить по ссылке, и бот должен отреагировать в ответ
Есть таблица в базе данных, в которой существует 4 нужных нам столбца: "date", "vsego", "zabronirovano", "nomer"