LoginSignup
0
0

More than 5 years have passed since last update.

基本情報技術者試験H28春期午後問8(疑似言語)VBAプログラム

Last updated at Posted at 2016-07-10
Option Explicit
Public Data(24) As String
Public MemoCnt As Integer, MemoMax As Integer, Memo(4) As Integer
Public DataLen As Integer, DataMax As Integer
Public textLen As Integer, text As String

Sub main()
    Dim i As Integer
    MemoMax = 5
    DataMax = 25
    Call resetMemo
    Call addMemo(4, "Aoki")
    Call output
    Call addMemo(4, "Imai")
    Call output
    Call addMemo(3, "Uno")
    Call output
    Call addMemo(4, "Endo")
    Call output
    Call deleteMemo(0)
    Call output
    Call changeMemo(2, 3, "Abe")
    Call output
    Call moveMemo(2, 0)
    Call output
End Sub

Sub resetMemo()
    Dim i As Integer
    MemoCnt = 0
    DataLen = 0
    For i = 0 To 4
        Memo(i) = 0
    Next
    For i = 0 To 24
        Data(i) = ""
    Next
End Sub

Sub addMemo(textLen, text)
    Dim i As Integer
    Memo(MemoCnt) = DataLen
    MemoCnt = MemoCnt + 1
    Data(DataLen) = textLen
    DataLen = DataLen + 1
    For i = 0 To textLen - 1
        Data(DataLen + i) = Mid(text, i + 1, 1)
    Next
    DataLen = DataLen + textLen
End Sub

Sub deleteMemo(pos)
    Dim i As Integer
    i = pos + 1
    Do While i < MemoCnt
        Memo(i - 1) = Memo(i)
        i = i + 1
    Loop
    MemoCnt = MemoCnt - 1
End Sub

Sub changeMemo(pos, textLen, text)
    Dim i As Integer
    Memo(pos) = DataLen
    Data(DataLen) = textLen
    DataLen = DataLen + 1
    For i = 0 To textLen - 1
        Data(DataLen + i) = Mid(text, i + 1, 1)
    Next
    DataLen = DataLen + textLen
End Sub

Sub moveMemo(fromPos, toPos)
    Dim i As Integer, m As Integer
    m = Memo(fromPos)
    If fromPos < toPos Then
        For i = fromPos To toPos - 1
            Memo(i) = Memo(i + 1)
        Next
    End If
    If fromPos > toPos Then
        For i = fromPos To toPos + 1 Step -1
            Memo(i) = Memo(i - 1)
        Next
    End If
    Memo(toPos) = m
End Sub

Sub output()
    Dim i As Integer
    For i = 0 To 4
        Debug.Print "Memo("; i; ")="; Memo(i)
    Next
    For i = 0 To DataLen - 1
        Debug.Print "Data("; i; ")="; Data(i)
    Next
    Debug.Print "------------------------------"
End Sub

実行結果

Memo( 0 )= 0 
Memo( 1 )= 0 
Memo( 2 )= 0 
Memo( 3 )= 0 
Memo( 4 )= 0 
Data( 0 )=4
Data( 1 )=A
Data( 2 )=o
Data( 3 )=k
Data( 4 )=i
------------------------------
Memo( 0 )= 0 
Memo( 1 )= 5 
Memo( 2 )= 0 
Memo( 3 )= 0 
Memo( 4 )= 0 
Data( 0 )=4
Data( 1 )=A
Data( 2 )=o
Data( 3 )=k
Data( 4 )=i
Data( 5 )=4
Data( 6 )=I
Data( 7 )=m
Data( 8 )=a
Data( 9 )=i
------------------------------
Memo( 0 )= 0 
Memo( 1 )= 5 
Memo( 2 )= 10 
Memo( 3 )= 0 
Memo( 4 )= 0 
Data( 0 )=4
Data( 1 )=A
Data( 2 )=o
Data( 3 )=k
Data( 4 )=i
Data( 5 )=4
Data( 6 )=I
Data( 7 )=m
Data( 8 )=a
Data( 9 )=i
Data( 10 )=3
Data( 11 )=U
Data( 12 )=n
Data( 13 )=o
------------------------------
Memo( 0 )= 0 
Memo( 1 )= 5 
Memo( 2 )= 10 
Memo( 3 )= 14 
Memo( 4 )= 0 
Data( 0 )=4
Data( 1 )=A
Data( 2 )=o
Data( 3 )=k
Data( 4 )=i
Data( 5 )=4
Data( 6 )=I
Data( 7 )=m
Data( 8 )=a
Data( 9 )=i
Data( 10 )=3
Data( 11 )=U
Data( 12 )=n
Data( 13 )=o
Data( 14 )=4
Data( 15 )=E
Data( 16 )=n
Data( 17 )=d
Data( 18 )=o
------------------------------
Memo( 0 )= 5 
Memo( 1 )= 10 
Memo( 2 )= 14 
Memo( 3 )= 14 
Memo( 4 )= 0 
Data( 0 )=4
Data( 1 )=A
Data( 2 )=o
Data( 3 )=k
Data( 4 )=i
Data( 5 )=4
Data( 6 )=I
Data( 7 )=m
Data( 8 )=a
Data( 9 )=i
Data( 10 )=3
Data( 11 )=U
Data( 12 )=n
Data( 13 )=o
Data( 14 )=4
Data( 15 )=E
Data( 16 )=n
Data( 17 )=d
Data( 18 )=o
------------------------------
Memo( 0 )= 5 
Memo( 1 )= 10 
Memo( 2 )= 19 
Memo( 3 )= 14 
Memo( 4 )= 0 
Data( 0 )=4
Data( 1 )=A
Data( 2 )=o
Data( 3 )=k
Data( 4 )=i
Data( 5 )=4
Data( 6 )=I
Data( 7 )=m
Data( 8 )=a
Data( 9 )=i
Data( 10 )=3
Data( 11 )=U
Data( 12 )=n
Data( 13 )=o
Data( 14 )=4
Data( 15 )=E
Data( 16 )=n
Data( 17 )=d
Data( 18 )=o
Data( 19 )=3
Data( 20 )=A
Data( 21 )=b
Data( 22 )=e
------------------------------
Memo( 0 )= 19 
Memo( 1 )= 5 
Memo( 2 )= 10 
Memo( 3 )= 14 
Memo( 4 )= 0 
Data( 0 )=4
Data( 1 )=A
Data( 2 )=o
Data( 3 )=k
Data( 4 )=i
Data( 5 )=4
Data( 6 )=I
Data( 7 )=m
Data( 8 )=a
Data( 9 )=i
Data( 10 )=3
Data( 11 )=U
Data( 12 )=n
Data( 13 )=o
Data( 14 )=4
Data( 15 )=E
Data( 16 )=n
Data( 17 )=d
Data( 18 )=o
Data( 19 )=3
Data( 20 )=A
Data( 21 )=b
Data( 22 )=e
------------------------------
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0