Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 | 3 | 4 | 5 | 6 |

 

  Вопрос: Помогите кто нибудь..... Добавлено: 18.02.09 19:27  

Автор вопроса:  WOL4ARA | ICQ: 366673111 
народ такая задачка: В заданном массиве строк найти строку с максимальным количеством вхождений заданного символа.смог сделать только то чтоб строки складывались))) напишите кто нибудь код пожалуйста а то непонятно.

Ответить

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

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



ICQ: 366673111 

Вопросов: 1
Ответов: 6
 Профиль | | #1 Добавлено: 18.02.09 20:40
народ пожалуйста? или некто не знает?

Ответить

Номер ответа: 2
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #2
Добавлено: 18.02.09 20:56
нЕкто знает. но кто этот нЕкто. циклом пройдись по всем строкам, и в каждой вызывай подсчет символа в строке. можно руками сделать через Mid или через поиск в строке(хз какой метод). Получишь массив циферок. Дальше пройдись по этому массиву и найди максимум. и все.

Ответить

Номер ответа: 3
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #3 Добавлено: 18.02.09 21:03
Подсчет тоже можно через цикл с первого символа до последнего (Len) и внутри него поиск через Instr(позиция в строке, строка в какой ищем, 'символ, какой ищем', текстовое сравнение строк (в данном случае 1) )

Ответить

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



Вопросов: 5
Ответов: 344
 Профиль | | #4 Добавлено: 18.02.09 21:03
  1. Function GetMaxCntChar(Ch As String, ArrayOfStr) As String
  2. Dim I As Long, A, MaxC As Long
  3. For I = LBound(ArrayOfStr) To UBound(ArrayOfStr)
  4.   A = Split(ArrayOfStr(I), Ch)
  5.   If UBound(A) > MaxC Then MaxC = UBound(A): GetMaxCntChar = ArrayOfStr
  6. Next I
  7. End Function

Ответить

Номер ответа: 5
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #5 Добавлено: 18.02.09 21:08
... = ArrayOfStr(I)

Ответить

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



Вопросов: 33
Ответов: 245
 Профиль | | #6 Добавлено: 18.02.09 21:14
 А я как видимо легких путей не ищу, как обычно))

Option Base 1
Option Explicit

Function Find(MyArray As Variant, MyString As String) As String
Dim i As Double
Dim i1 As Integer
Dim i2 As Integer
Dim arr1() As Integer
Dim item As Variant

i = 0
i2 = 0
ReDim arr1(UBound(MyArray))

For Each item In MyArray
    i1 = 0
    i2 = i2 + 1
            For i = 1 To Len(CStr(item))
                If Mid(item, i, 1) = MyString Then i1 = i1 + 1
            Next i
    arr1(i2) = i1
Next item

i2 = 0

For i1 = 1 To UBound(arr1)
    If i1 = UBound(arr1) Then GoTo lastline
        If CInt(arr1(i1)) > CInt(arr1(i1 + 1)) And i2 < arr1(i1) Then
            i2 = CInt(arr1(i1))
            Find = MyArray(i1)
        End If
Next i1

lastline:

    If CInt(arr1(UBound(arr1))) < i2 Then
        Exit Function
    Else
        Find = (MyArray(UBound(arr1)))
    End If

End Function

Sub test1()
Dim arr As Variant
Dim i As String
arr = Array("a", "aa", "avasa", "aaaaaa", "a", "aaaaa", "aaaaa";)
i = Find(arr, "a";)
Debug.Print i
End Sub

Ответить

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



Вопросов: 5
Ответов: 344
 Профиль | | #7 Добавлено: 18.02.09 21:21
Пожалуй, последний ответ смотрится убедительнее - видно, что старался!

Ответить

Номер ответа: 8
Автор ответа:
 WOL4ARA



ICQ: 366673111 

Вопросов: 1
Ответов: 6
 Профиль | | #8 Добавлено: 18.02.09 21:24
а можно глупый вопрос, что за база 1 он мне пишет что нет такого оператора)) или я что то не понимаю,
опять

Ответить

Номер ответа: 9
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #9
Добавлено: 18.02.09 21:27
михаил, велкам в c++

Ответить

Номер ответа: 10
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #10 Добавлено: 18.02.09 21:37
Если ты про
option base 1
, то это значит, что у массивов в коде, lbound(нижняя граница) будет равен 1, а не 0, как обычно.

Ответить

Номер ответа: 11
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #11 Добавлено: 18.02.09 21:38
ВолЧара, а может все-же возьмешь первый пример, а? Его при желании тоже можно раздуть на несколько листов... Подумай хорошенько!

Ответить

Номер ответа: 12
Автор ответа:
 WOL4ARA



ICQ: 366673111 

Вопросов: 1
Ответов: 6
 Профиль | | #12 Добавлено: 18.02.09 21:39
))))) спасибо народ щас посижу и подумаю

Ответить

Номер ответа: 13
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #13 Добавлено: 18.02.09 21:45
fAndOrIn, а я пожалуй, посижу повтыкаю в то, что ты написал. Ловко как извернулся. ОПЫТ!

Ответить

Номер ответа: 14
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #14 Добавлено: 18.02.09 22:07
А про все OPTION ... в данном случае стоит напомнить, если кто-то не знает(или забыл), что они должны быть размещщены в самом верху модуля кода.

Ответить

Номер ответа: 15
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #15
Добавлено: 19.02.09 01:07
  1. string res = v.OrderByDescending(s => s.ToCharArray().Count(c => c == 'c')).Take(1).First();

Ответить

Страница: 1 | 2 | 3 | 4 | 5 | 6 |

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



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