Заполнить массив недостающими значениями - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Ситуация такая, имеется listview, со значениями типа 1,2,3,4,6,7,9 Задача такая: Нужно из всех имеющихся значений составить массив, а потом перебрать его, начиная от 1 и далее, переменная n должна быть равна a) пропущенному значению б) если пропущенных значений нет, то максимальному значению +1 На данный момент я пока работаю по варианту б
Листинг программы
  1. For i = 0 To ListView1.Items.Count - 1
  2. Me.ListView1.Items(i).Focused = True
  3. If CInt(ListView1.FocusedItem.Text) > n Then
  4. n = CInt(ListView1.FocusedItem.Text)
  5. End If
  6. Next
  7. n = n + 1
Как найти пропущенное значение? К примеру в той последовательности, что я дал 1,2,3,4,6,7,9 , n должно равняться 5. При следующем заходе 8, а потом уже по варианту б = 10
Все, разобрался, при отображении сортирую listview
Листинг программы
  1. ListView1.Sorting = SortOrder.Ascending
далее использую
Листинг программы
  1. Dim k As Integer = 1
  2. For i = 0 To ListView1.Items.Count - 1
  3. Me.ListView1.Items(i).Focused = True
  4. If k <> CInt(ListView1.FocusedItem.Text) Then
  5. n = k
  6. Exit Sub
  7. End If
  8. k = k + 1
  9. Next
  10. If n = 1 Then n = k

Решение задачи: «Заполнить массив недостающими значениями»

textual
Листинг программы
  1.         ' Получаем отсортированный числовой список значений
  2.         Dim lvItems = From item As ListViewItem In ListView1.Items Select i = Integer.Parse(item.Text) Order By i
  3.         ' Создаем список пропущенных значений, дополненный увеличенным на один наибольшим значением
  4.         Dim missedItems = lvItems.Zip(lvItems.Skip(1), Function(x, y) Enumerable.Range(x + 1, y - x - 1)).SelectMany(Function(x) x).Concat(New Integer() {lvItems.Max + 1})
  5.         ' Добавляем список в ListView
  6.         ListView1.Items.AddRange(missedItems.Select(Function(x) New ListViewItem(x.ToString)).ToArray)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы