Помогите, плиз, есть задача: строка с данными ABBBBABBBCBAAAA ну и так далее нужно найти совпадения отдельно взятых пар, идущих по порядку, например: AB и BA, AB И BC
Помогите, плиз, есть задача: строка с данными ABBBBABBBCBAAAA ну и так далее нужно найти совпадения отдельно взятых пар, идущих по порядку, например: AB и BA, AB И BCokom
okom, не знаю, надо учитывать перекрестие пар или нет, чуть что подправляйте, либо пишите
[vba]
Код
Sub mac() Dim arr1(1 To 101) As String Dim arr2(1 To 101) As String Dim i As Integer, j As Integer i = 1 j = 1
For i = 1 To 100 arr1(i) = Cells(1, i) Next i arr1(101) = "end"
For i = 1 To 100 If arr1(i) = "A" And arr1(i + 1) = "B" Then arr2(j) = "AB" j = j + 1 ' i = i + 1 ElseIf arr1(i) = "B" And arr1(i + 1) = "A" Then arr2(j) = "BA" j = j + 1 ' i = i + 1 ElseIf arr1(i) = "B" And arr1(i + 1) = "C" Then arr2(j) = "BC" j = j + 1 ' i = i + 1 End If Next i arr2(101) = "end"
'джаст проверка, что есть в массиве arr2 i = 1 While i < j MsgBox arr2(i) i = i + 1 Wend '#################################
i = 1 While i < j If arr2(i) = "AB" And arr2(i + 1) = "BA" Then MsgBox "совпадение пары АБ и БА" ElseIf arr2(i) = "AB" And arr2(i + 1) = "BC" Then MsgBox "совпадение АБ и БС" End If i = i + 1 Wend End Sub
[/vba]
okom, не знаю, надо учитывать перекрестие пар или нет, чуть что подправляйте, либо пишите
[vba]
Код
Sub mac() Dim arr1(1 To 101) As String Dim arr2(1 To 101) As String Dim i As Integer, j As Integer i = 1 j = 1
For i = 1 To 100 arr1(i) = Cells(1, i) Next i arr1(101) = "end"
For i = 1 To 100 If arr1(i) = "A" And arr1(i + 1) = "B" Then arr2(j) = "AB" j = j + 1 ' i = i + 1 ElseIf arr1(i) = "B" And arr1(i + 1) = "A" Then arr2(j) = "BA" j = j + 1 ' i = i + 1 ElseIf arr1(i) = "B" And arr1(i + 1) = "C" Then arr2(j) = "BC" j = j + 1 ' i = i + 1 End If Next i arr2(101) = "end"
'джаст проверка, что есть в массиве arr2 i = 1 While i < j MsgBox arr2(i) i = i + 1 Wend '#################################
i = 1 While i < j If arr2(i) = "AB" And arr2(i + 1) = "BA" Then MsgBox "совпадение пары АБ и БА" ElseIf arr2(i) = "AB" And arr2(i + 1) = "BC" Then MsgBox "совпадение АБ и БС" End If i = i + 1 Wend End Sub
Опишу проблему подробнее, есть строка с данными ABBBCDDDCBAA допустим это перемещения из одного пункта в другой с помощью самолета. из них комбинации AB и BA это бесплатный перелет он стоит 0 денежных единиц все остальные это платный полет, причем полет может стоить x или y денежных единиц и это зависит от того, был ли куплен обратный билет (пример комбинации CDDDC прилетел из C в D и вернулся обратно) вопрос таков, необходимо вычислить X и Y для каждого случая... Дополнительная проблема, с которой столкнулся когда делал алгоритм, полученные значения должны возвращаться в массив той же размерности: См. таблицу Заранее спасибо!
Опишу проблему подробнее, есть строка с данными ABBBCDDDCBAA допустим это перемещения из одного пункта в другой с помощью самолета. из них комбинации AB и BA это бесплатный перелет он стоит 0 денежных единиц все остальные это платный полет, причем полет может стоить x или y денежных единиц и это зависит от того, был ли куплен обратный билет (пример комбинации CDDDC прилетел из C в D и вернулся обратно) вопрос таков, необходимо вычислить X и Y для каждого случая... Дополнительная проблема, с которой столкнулся когда делал алгоритм, полученные значения должны возвращаться в массив той же размерности: См. таблицу Заранее спасибо!okom