• 쇼핑몰
  • 커뮤니티
  • 북마크

vb6.0/vba




[vb6.0/vba] [vb6.0/vba] 특정 패턴으로 더하고 빼기(자화자찬)

하나를하더라도최선을
2019.10.20 23:24 658 0

본문



지식인에 아래와 같은 질문이 올라왔다.

28631ea7abd7ec6c8a0ea74913d1e2c8_1571580832_9606.png


심각한 난독증르로 글 내용은 모르겠고...


+aaa-aaa-aaa+++aaaaaa--aaa

이렇게 입력된것은 

+값3-값2-값1+++값4값4--값2

이렇게 나오면 되고...


-aaaaaa+aaa++aaaaaa---aaa

이렇게 입력된것은

-값1값1+값2++값4값4---값1

이렇게 나오면 된단다.

한참 고민 해보니 뭔가 머리에서 훅하고 지나간다....

배열로 생각해보자 ....

+aaa-aaa-aaa+++aaaaaa--aaa


즉 aaa 로 나누어 배열로 만들면....

-,,+,++,,---,

이런 배열이 된다.


그럼 -만큼 빼고 +만큼 더하면 되지 않나?


해보자...


Sub program1472_com()
    Dim V As Variant
    V = Split(Selection.Value, "aaa")
    Dim i As Integer, n As Integer
    n = 2
    For i = 0 To UBound(V)
        n = n - UBound(Split(V(i), "-"))
        n = n + UBound(Split(V(i), "+"))
        V(i) = V(i) & "값" & n
    Next
    MsgBox Join(V, vbnellstring)
End Sub


결과:)

+값3-값2-값1+++값4값4--값2값2


뭐가 하나 더 나온다."+값3-값2-값1+++값4값4--값2" 이렇게 나와야 하는데...

버그? 

생각해보니 aaa로 나눈 배열중 마지막 배열은 사용하면 안되는 배열이다.


Sub program1472_com()
    Dim V As Variant
    V = Split(Selection.Value, "aaa")
    Dim i As Integer, n As Integer
    n = 2
    For i = 0 To UBound(V) - 1
        n = n - UBound(Split(V(i), "-"))
        n = n + UBound(Split(V(i), "+"))
        V(i) = V(i) & "값" & n
    Next
    MsgBox Join(V, vbnellstring)
End Sub
 

결과:)

+aaa-aaa-aaa+++aaaaaa--aaa -> +값3-값2-값1+++값4값4--값2

-aaaaaa+aaa++aaaaaa---aaa -> -값1값1+값2++값4값4---값1


잘 나온다.


프로그램은 재미있다. == ?



댓글목록 0

등록된 댓글이 없습니다.