문제1
(예약수량 * 예약금액)의 값이 7000000 이상인 자료에 대하여 지불금액의 값에 따라 오름차순으로 정렬하였을 때 마지막 자료의 예약일자를 출력하시오. 단, 동일값 발생시 일련번호에 따라 오름차순으로 정렬하시오. (※결과값은 수검자 PC의 C:\C_it\data\Ans1.txt 파일에 출력되도록 프로그램을 작성 할 것)
Option Explicit
Sub main()
''필수 변수 선언
Dim 인수1, 인수2, i, 버퍼 As Variant
''핵심 변수 선언
Dim 예약수량, 예약금액, 지불금액(1000), 예약일자(1000), 일련번호(1000), j, Num, Temp As Variant
''인수 처리
인수1 = Val(Left(Command, InStr(Command, " ")))
인수2 = Val(Mid(Command, InStr(Command, " ")))
''입력 파일 처리
Open "c:\c_it\data\abc04.txt" For Input As #1
For i = 1 To 인수2
Line Input #1, 버퍼
If i > 인수1 Then
''변수 저장
예약수량 = Val(Mid(버퍼, 18, 5))
예약금액 = Val(Mid(버퍼, 23, 10))
''배열 변수 구하기
If (예약수량 * 예약금액) >= 7000000 Then
Num = Num + 1
지불금액(Num) = Val(Mid(버퍼, 48, 10))
예약일자(Num) = Trim(Mid(버퍼, 8, 10))
일련번호(Num) = Trim(Mid(버퍼, 1, 7))
End If
End If
Next i
''지불금액 오름차순 or _ (지불금액같음 and 일련번호 오름차순)
For i = 1 To Num
For j = i To Num
If 지불금액(i) > 지불금액(j) Or _
(지불금액(i) = 지불금액(j) And 일련번호(i) > 일련번호(j)) Then
Temp = 지불금액(i)
지불금액(i) = 지불금액(j)
지불금액(j) = Temp
Temp = 일련번호(i)
일련번호(i) = 일련번호(j)
일련번호(j) = Temp
End If
Next j
Next i
Close #1
''출력 파일 처리
Open "c:\c_it\data\ans1.txt" For Output As #2
Print #2, 인수1, 인수2, 예약일자(Num)
Close #2
End Sub