2007年7月13日金曜日

突合せ処理

3年かけたプロジェクトが終了し、次の開発まで時間があるのでASP.NETでちょっと一息と思っていたのですが、
次の開発が予想外に先に伸びてしまい、中途半端な期間を中途半端な作業で埋められてしまいました。
3年間がんばったんだから少しぐらいゆっくりさせてくれてもいいのにぃ!!゜゜(´□`。)°゜。ワーン!!

その中途半端な作業というのがVB6!!しかも新規作成!!
なんで?なぜ今から作るのに.NETでなくてVB6なの!?
VB6は7年ぶりです。

覚えてませんっ!!

本数は5本。
サクッと終わらせて、さっさと遊ぼうとおもっていたのに甘かった。
仕様が難しい。
ということでASP.NETは「Hello World!」でちょっとお休みです。


今日は付き合わせ処理で詰まってしまいました。
例えば
A配列に1, 3, 5, 7, 9
B配列に1, 4, 5, 6
というデータがあったとして
「A配列にあって、B配列にない」ものと
「A配列になくて、B配列にある」ものを抽出するというものです。

恥ずかしいですが、どうすれば抽出できるかわかりませんでした。
ある人に聞きました。もちろん思いっきり馬鹿にされました。
「こんなん基本やで!!情報処理2種の試験にも出るで。」と。
私が受けた試験には出なかったし、試験勉強にも出なかった。・・・と思う。
でも勉強になりました。
使う機会があまりないのでメモメモ。

Public Class Form1


 

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        Dim A() As Integer = {13579}

        Dim B() As Integer = {1456}


 

        Dim CntA As Integer = 0

        Dim CntB As Integer = 0


 

        Do Until CntA > A.Length - 1 And CntB > B.Length - 1

            If CntA > A.Length - 1 And CntB <= B.Length - 1 Then

                'A配列になくて、B配列にある

                Debug.WriteLine("①A配列になくて、B配列にある:" & B(CntB))

                CntB += 1

            ElseIf CntA <= A.Length - 1 And CntB > B.Length - 1 Then

                'A配列にあって、B配列にない

                Debug.WriteLine("②A配列にあって、B配列にない:" & A(CntA))

                CntA += 1

            ElseIf CntA <= A.Length - 1 And CntB <= B.Length - 1 Then

                If A(CntA) > B(CntB) Then

                    'A配列になくて、B配列にある

                    Debug.WriteLine("③A配列になくて、B配列にある:" & B(CntB))

                    CntB += 1

                ElseIf A(CntA) < B(CntB) Then

                    'A配列にあって、B配列にない

                    Debug.WriteLine("④A配列にあって、B配列にない:" & A(CntA))

                    CntA += 1

                ElseIf A(CntA) = B(CntB) Then

                    'A配列にあって、B配列にもある

                    Debug.WriteLine("⑤A配列にあって、B配列にもある:" & A(CntA))

                    CntA += 1

                    CntB += 1

                End If

            End If

        Loop


 

    End Sub

End Class


実行結果は

⑤A配列にあって、B配列にもある:1
④A配列にあって、B配列にない:3
③A配列になくて、B配列にある:4
⑤A配列にあって、B配列にもある:5
③A配列になくて、B配列にある:6
②A配列にあって、B配列にない:7
②A配列にあって、B配列にない:9

0 件のコメント: