모의고사 4번 문제요.
4번에 1번 문제요. 정렬 중급문제 같은데.
보통 출력대상은 합계 형태로 안나오던거 같은데 그래서 헷갈렸어요.
5번째 자료의 (예약수량*예약금액)을 구하면 되는데 그걸 합계(1000)으로 하는걸 모르고
제 맘대로 코딩했는데 채점해보니까 점수는 나왔거든요?
제 코딩이 좀 더 복잡한거 같은데. 그래도 맞는건지 좀 봐주실래요?
혹시나 시험장 가서도 문제가 조금이라도 바뀌면 당황할거 같은데. 그래도 코딩이 잘 된건지.. 좀 봐주세요.
Sub main()
''필수 변수 선언
Dim 인수1, 인수2, K, 버퍼 As Variant
''핵심 변수 선언
Dim 지불방법, 지불금액(1000), 예약수량(1000), 예약금액(1000), 일련번호(1000), P, Temp, Num 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 K = 1 To 인수2
Line Input #1, 버퍼
If K >= 인수1 Then
''변수 저장
지불방법 = Trim(Mid(버퍼, 58, 2))
''배열변수 처리
If 지불방법 = "AA" Or 지불방법 = "BB" Then
Num = Num + 1
지불금액(Num) = Val(Mid(버퍼, 48, 10))
예약수량(Num) = Val(Mid(버퍼, 18, 5))
예약금액(Num) = Val(Mid(버퍼, 23, 10))
일련번호(Num) = Trim(Mid(버퍼, 1, 7))
End If
End If
Next K
''정렬(지불금액 오름차순 or 지불금액 같음 and 일련번호 오름차순)
For K = 1 To Num
For P = K To Num
If 지불금액(K) > 지불금액(P) Or 지불금액(K) = 지불금액(P) And 일련번호(K) > 일련번호(P) Then
Temp = 지불금액(K)
지불금액(K) = 지불금액(P)
지불금액(P) = Temp
Temp = 예약수량(K)
예약수량(K) = 예약수량(P)
예약수량(P) = Temp
Temp = 예약금액(K)
예약금액(K) = 예약금액(P)
예약금액(P) = Temp
Temp = 일련번호(K)
일련번호(K) = 일련번호(P)
일련번호(P) = Temp
End If
Next P
Next K
Close #1
''출력 파일 처리
Open "c:\c_it\data\ans1.txt" For Output As #1
Print #1, 인수1, 인수2, 예약수량(5) * 예약금액(5)
Close #1
End Sub
그러니까 저는 배열변수를 합계로 안하고 예약수량이랑 예약 금액을 배열로 넣어버렸어요.
그래서 마지막에 출력하는 결과값도 저런식으로 ㅠㅠ
그래도 답이 나오던데. 이렇게 해도 맞나요?