Как вписать в новый массив только один новые элемент, если в старом массиве таких элементов несколько?
Доброго вечера всем.
Никак не могу решить задачку по ООП.
Задание такое:
"Текстовый файл U16.txt содержит информацию о рекламных роликах. В строке содержится следующая информация:
рекламируемый товар, товарная группа, продолжительность видеоролика, формат видеоролика в пикселях (ширина, высота). Создайте класс Clip для хранения данных об одном клипе. Создайте класс-контейнер Clips для хранения всех данных о рекламных роликах. Напишите программу для печати исходных данных рекламных роликов в табличном формате.
Найдите самые популярные группы товаров (повторяющиеся чаще всего) для рекламируемых товаров. Если существует несколько таких групп товаров, найдите все и сохраните в отдельном контейнере. Создать контейнер клипов заданного формата Ш x В (ширина, высота вводятся с клавиатуры) таким образом, чтобы в него включался только один клип из определенной группы. Отсортируйте этот контейнер по длительности клипа и группе товаров. Рассчитайте общую продолжительность клипов из вновь созданного контейнера."
Не получается сделать вот это: "Создать контейнер клипов заданного формата Ш x В (ширина, высота вводятся с клавиатуры) таким образом, чтобы в него включался только один клип из определенной группы."
То есть если я ввожу, например, 800 и 600, то в новый контейнер должны записаться элементы:
-----------------------------------------------------------------
Product Group Duration Width Height Repeating
-----------------------------------------------------------------
Product1 BGroup 10,2 800 600 3
Product3 AGroup 3,99 800 600 2
-----------------------------------------------------------------
Но увы, никак не получается придумать условия для проверки. То есть если допустим мы записали элемент с введёнными показателями Width и Height из группы BGroup. Как мне сделать проверку, что если программа видит еще элемент из этой группы с такими же показателями, то она не должна его вписывать в ново созданный контейнер? И также само со второй группой
ну на задачу я не могу ответить, я могу ответить на заголовок. был бы тут c++ я бы применил sort потом unique.
или просто бы сделал бы хеш-таблицу и потом бы из хеш-таблицы обратно массив бы сделал, если прям обязательно именно массив.(но жеш-таблица не сортирует и даже еще дополнительно перемешивает, но она быстрее, особенно для больших объемов)
предлагаю использовать Dictionary (это вроде хеш таблица и есть), а потом из нее обратно массив
хеш-таблица это таблица "заголовок-данные", заголовок еще ключом называют. хеш таблица гарантирует что все заголовки уникальные. если в нее добавить повторяющийся заголовок, то просто старый заголовок с данными будут заменены новыми.
есть еще HashSet, это как хэш-таблица, но там только заголовки. тоесть это не таблица а множество получается.
пример использования хеш-множества для оставления только уникальных элементов:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] strings = { "qwe", "asd", "zxc", "asd", "asd", "qwe" };
HashSet<string> set = new HashSet<string>();
foreach(string s in strings)
{
set.Add(s);
}
strings = new string[set.Count];
int i = 0;
foreach(string s in set)
{
strings[i++] = s;
}
foreach(string s in strings)
{
Console.WriteLine(s);
}
}
}
}