Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Массив структур (C#)

29K
05 января 2011 года
Енот_в_Засаде
224 / / 09.11.2010
С наступившим уважаемые форумчане:)
Прошу вашей подсказки. У меня есть массив структур (структура описывает габариты груза (длина, ширина, высота)), этот массив упорядочен по возрастанию высоты груза, мне необходимо записать в список (ArrayList boxByHeight) количество грузов с одинаковой высотой, т.е если например грузов с высотой 3 - 5 шт, а с высотой 5 - 4шт, то boxByHeight[0]=5, boxByHeight[1]=4. написал следующий код:
Код:
//подсчёт типов коробок по высоте
            ArrayList boxByHeight = new ArrayList();
            int count = 0;
     
            for (int i = 0; i < totalBox-1; i++)
            {
                if (boxes[i + 1].b_height == boxes.b_height)
                {
                    count++;
           
                }
                else
                {
                    boxByHeight.Add(count+1);
                    count = 0;
                   
                }
                           
            }

но проблема в том, что последний груз в список не добавляется, т.к. сразу после подсчёта количества, осуществляется выход из цикла, и boxByHeight.Add(count+1); - не выполняется. Как мне записать последний элемент в список:confused:
P.S. чёт голова не варит после праздников:D
360
05 января 2011 года
P*t*
474 / / 15.02.2007
У тебя запись в boxByHeight происходит только в случае неравенства высоты. Если, например, все высоты одинаковы, то не запишется вообще ничего.

Нужно добавить после цикла еще один вызов
boxByHeight.Add(count+1);
29K
05 января 2011 года
Енот_в_Засаде
224 / / 09.11.2010
Цитата: P*t*
У тебя запись в boxByHeight происходит только в случае неравенства высоты. Если, например, все высоты одинаковы, то не запишется вообще ничего.

Нужно добавить после цикла еще один вызов
boxByHeight.Add(count+1);


спасибо)

5
05 января 2011 года
hardcase
4.5K / / 09.08.2005
мне необходимо записать в список (ArrayList boxByHeight) количество грузов с одинаковой высотой



 
Код:
var sameHeights = boxes
  .GroupBy(b => b.b_height)
  .Select(g => new { Height = g.Key, Count = g.Count() })
  .ToList();
29K
05 января 2011 года
Енот_в_Засаде
224 / / 09.11.2010
Цитата: hardcase
 
Код:
var sameHeights = boxes
  .GroupBy(b => b.b_height)
  .Select(g => new { Height = g.Key, Count = g.Count() })
  .ToList();



Спасибо:)

5
05 января 2011 года
hardcase
4.5K / / 09.08.2005
Спасибо:)


В принципе можно короче (я в браузере писал), все перегрузки LINQ в голове не удерживаю:

 
Код:
var sameHeights = boxes
  .GroupBy(b => b.b_height, (height, boxes) => new { Height = height, Count = boxes.Count() })
  .ToList();
29K
05 января 2011 года
Енот_в_Засаде
224 / / 09.11.2010
Цитата: hardcase
В принципе можно короче (я в браузере писал), все перегрузки LINQ в голове не удерживаю:
 
Код:
var sameHeights = boxes
  .GroupBy(b => b.b_height, (height, boxes) => new { Height = height, Count = boxes.Count() })
  .ToList();


люди которым я в конечном итоге буду показывать программу, думают что чем больше кода - тем солиднее:D

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог