Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Списки Добавлено: 17.02.08 21:37  

Автор вопроса:  Winand | Web-сайт: winandfx.narod.ru
Чет никак не врублюсь..
Есть два списка с числами (в двух коллекциях)
-> 1 3 6 9 5
-> 4 9 3 7 5

Мне надо каким-нибудь простым и быстрым способом выделить одинаковые значения в отдельный список
->1 6
->4 7
->3 9 5

как бы это сделать чтобы кода было поменьше? можно без кода, хоть в теории опишите..

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 17.02.08 21:42
кароч на выходе я должен знать какие элементы уникальные в первом/втором списках и какие в них повторяются.

А то моя кривая реализация перестала правильно работать в связи с изменениями в проге. Так я даж не могу понять как оно работает вообще=))

Ответить

Номер ответа: 2
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #2 Добавлено: 17.02.08 22:40
Function process(c1 As Collection, c2 As Collection) As Collection
    '
    Dim c3 As New Collection                     ' копия c1 с ключами
    Dim c4 As New Collection                     ' результат
    '
    On Error Resume Next                         ' выключаем контроль ошибок
    '
    Dim v
    For Each v In c1: c3.Add v, CStr(v): Next v  ' клпируем c1 в c3, но с ключами
    For Each v In c2
        Dim n: n = c3(CStr(v))                   ' по ключу пытаемся получить число из c3
        If Err Then Err.Clear Else c4.Add v      ' если ошибка, стираем ее, если нет, то добавляем число в результат
    Next v
    '
    Set process = c4                             ' возвращаем результат
    '
End Function

Ответить

Номер ответа: 3
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #3 Добавлено: 17.02.08 22:43
Если надо еще и уникальные оставить в списках, то в коде после добавления числа в результат, надо добавить удаление числа из c1 и с2.

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 18.02.08 11:23
    On Error Resume Next                         ' выключаем контроль ошибок

Интересный "контроль ошибок"...

Ответить

Номер ответа: 5
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #5 Добавлено: 18.02.08 15:56
Steel Brand, а чего? Не видел никогда?

Ответить

Номер ответа: 6
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #6
Добавлено: 18.02.08 17:57
Это называется "забить на ошибки" =)

Ответить

Номер ответа: 7
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #7
Добавлено: 18.02.08 18:51
да, очень странно сделана работа с ключами. Если ключа нет, то вызывает ошибку. мне не понравилось))

Не знаю насколько вменяемо, но сделал вот так
Мне всё равно не нравится, но зато более понятно=)
    Dim cGB As New Collection, cG As New Collection, cb As New Collection
    Dim flag As Boolean
    For i = 1 To Map.LocVisib(loc).Count
        cb.Add Map.LocVisib(loc)(i)
    Next i
    For i = 1 To Map.LocAvail(loc).Count Step AVA_OPTS_len
        cG.Add Map.LocAvail(loc)(i)
    Next i
    For i = cG.Count To 1 Step -1
        For j = cb.Count To 1 Step -1
            If cG(i) = cb(j) Then
                cGB.Add cG(i)
                cb.Remove (j)
                flag = True
            End If
        Next j
        If flag Then cG.Remove (i)
        flag = False
    Next i
    For i = 1 To cb.Count
        '...
    Next i
    For i = 1 To cG.Count
        '...
    Next i
    For i = 1 To cGB.Count
        '...
    Next i

Ответить

Номер ответа: 8
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #8 Добавлено: 18.02.08 21:49
Называйте хоть как... :)) Суть - одна.

В преднамеренном допуске ошибок нет ничего страшного. Это просто на чуток другом уровне программирования далеком от академического.

P.S. А мой код короче :)))

Ответить

Номер ответа: 9
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #9
Добавлено: 19.02.08 01:14
ага, кое-кто через двоеточие любит писать очень))
А вообще да, короче. Спасибо, я про ключи практически ничего не знал

з.ы. Изучение cpp 3.1 сильно влияет на мозг) Я заметил, что как-то более понятный(мне как минимум) код стал получаться

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам