Здравствуйте, AntonAl, Вы писали:
AA>Здравствуйте, ettcat, Вы писали:
>>> Смысл такой: есть массив: [Имя , Количество] в котором Имя повторяется, надо сделать другой массив [Имя, Сумма], где Имя — уникальный и отсортированный список из первого массива и Сумма — это сумма Количества из первого массива для повторяющихся элементов имя.
E>> Простейшее решение — сортируем массив по ключевому полю (в данном
E>>случае [Имя], после чего все повторяющиеся имена будут идти по порядку.
E>> Теперь пробегаемся по массиву — на каждом шаге, если значение
E>>ключевого поля такое же как и предыдущее — то накапливаем аккумулятор (в
E>>данном случае просто инкрементируем SUM), если нет — то выдаем
E>>[ПредыдущееИмя, SUM], зануляем аккумулятор, обновляем его текущим
E>>значением и идем дальше.
AA>Вопрос как отсортировать?
Использовать в качестве таблицы двоичное дерево.
На С++ решалось бы примерно так:
vector<pair<string, int> > items;
map<string, int> sums;
for (auto it = items.begin(), end = items.end(); it != end; ++it)
sums[it->first] += it->second;
Как будет на VB — не знаю, к сожалению.
map даёт автоматическое упорядочивание.