Option Explicit
Type inrec
학번 As Double
이메일 As String
국어 As Double
영어 As Double
수학 As Double
과학 As Double
국사 As Double
총점 As Double
담당교사코드 As String
성취도 As Double
지역코드 As Double
End Type
Public aa() As inrec
Type outrec
학번 As Double
국어 As Double
영어 As Double
과학 As Double
국사 As Double
총점 As Double
담당교사코드 As String
성취도 As Double
지역코드 As Double
과국 As Double
국영 As Double
총수 As Double
국점 As Double
End Type
Public bb() As outrec
Public 시작라인 As Long
Public 마지막라인 As Long
Public 파일번호 As Long
Public cnt As Long
Public Sub file_init()
Dim 레코드 As String
Dim 명령줄인수 As String
Dim 공백위치 As Long
Dim i As Long
명령줄인수 = Trim(Command())
공백위치 = InStr(명령줄인수, " ")
시작라인 = Val(Left(명령줄인수, 공백위치))
마지막라인 = Val(Mid(명령줄인수, 공백위치))
ReDim aa(마지막라인 - 시작라인) As inrec
ReDim bb(마지막라인 - 시작라인) As outrec
파일번호 = FreeFile
Open "c:\c_it\data\abc11111.txt" For Input As #파일번호
For i = 0 To cnt - 1
Line Input #파일번호, 레코드
If i >= 시작라인 Then
aa(cnt).학번 = Val(Mid(레코드, 1, 6))
aa(cnt).이메일 = Mid(레코드, 7, 4)
aa(cnt).국어 = Val(Mid(레코드, 11, 3))
aa(cnt).영어 = Val(Mid(레코드, 14, 3))
aa(cnt).수학 = Val(Mid(레코드, 17, 3))
aa(cnt).과학 = Val(Mid(레코드, 21, 3))
aa(cnt).국사 = Val(Mid(24, 3))
aa(cnt).총점 = Val(Mid(레코드, 27, 3))
aa(cnt).담당교사코드 = Mid(레코드, 30, 1)
aa(cnt).성취도 = Mid(레코드, 31, 1)
aa(cnt).지역코드 = Mid(레코드, 32, 1)
bb(cnt).학번 = aa(cnt).학번
bb(cnt).국어 = aa(cnt).국어
bb(cnt).영어 = aa(cnt).영어
bb(cnt).과학 = aa(cnt).과학
bb(cnt).국사 = aa(cnt).국사
bb(cnt).총점 = aa(cnt).총점
bb(cnt).담당교사코드 = aa(cnt).담당교사코드
bb(cnt).성취도 = aa(cnt).성취도
bb(cnt).지역코드 = aa(cnt).지역코드
bb(cnt).과국 = aa(cnt).과학 + aa(cnt).국어
bb(cnt).국영 = aa(cnt).국어 + aa(cnt).영어
Dim 점수포인트 As Double
Select Case UCase(Trim(aa(cnt).성취도))
Case "A": 점수포인트 = 5
Case "B": 점수포인트 = 15
Case "C": 점수포인트 = 20
Case Else: 점수포인트 = 0
End Select
bb(cnt).총수 = aa(cnt).총점 + 점수포인트
bb(cnt).국점 = aa(cnt).국사 + 점수포인트
cnt = cnt + 1
End If
Next i
Close #파일번호
End Sub
1번문제
성취도가 A인 자료 중에서 (과학+국사)에 따라 오름차순 정렬하였을때 5번째 자료의 (과학+국사)의 값을 출력하시오. 단 동일값 발생시 학번에 따라 오름 차순 정렬하시오.
Option Explicit
Private Sub Form_Load()
Call file_init
Dim i As Long
Dim j As Long
Dim temp As outrec
For i = 0 To cnt - 2
For j = i + 1 To cnt - 1
If bb(i).과국 > bb(j).과국 Then
temp = bb(i)
bb(i) = bb(j)
bb(j) = temp
ElseIf bb(i).과국 = bb(j).과국 Then
If bb(i).학번 < bb(j).학번 Then
temp = bb(i)
bb(i) = bb(j)
bb(j) = temp
End If
End If
Next j
Next i
Dim count As Long
Dim 찾은값 As Double
count = 0
For i = 0 To cnt - 1
If UCase(bb(i).성취도) = "A" Then
If count = 5 Then
count = count + 1
찾은값 = bb(i).과국
Exit For
End If
End If
Next i
Open "c:\c_it\data\ans1.txt" For Output As #파일번호
Print #파일번호, Trim(Str(시작라인)), 마지막라인, 찾은값
Close #파일번호
End