90 likes | 310 Views
정보처리 기사 실기 실전대비. 사원번호. 사원등급. 상여금. 거래처등급. 담당이메일. 단가. 수량. 매출액. 이익포인트. 거래포인트. 배달거리. 숫 (6). 문 (1). 숫 (3). 문 (1). 문 (4). 숫 (3). 숫 (3). 숫 (3). 숫 (3). 숫 (3). 숫 (3). 실전문제 -1.
E N D
사원번호 사원등급 상여금 거래처등급 담당이메일 단가 수량 매출액 이익포인트 거래포인트 배달거리 숫(6) 문(1) 숫(3) 문(1) 문(4) 숫(3) 숫(3) 숫(3) 숫(3) 숫(3) 숫(3) 실전문제-1 문제1) 매출액이 70이상이면서 거래처등급이 ‘A’인 자료에 대해여 (상여금 + 이익포인트)에 따라 내림차순 정렬하였을 때 5번째 자료의 (상여금+이익포인트)를 출력하시오. 단, 동일값 발생시 사원번호에 따라 오름차순 정렬하여 처리하시오(20점) <처리조건> 1. 입력파일 레코드 구조 2. 명령어 인수 : 100, 200 3. 작업경로 : C:\C_it\data 4. 입력파일명(abc11112.txt), 출력파일명(ans1.txt) 5. 프로그램 파일명 : 문제1.frm , 문제1.vbp, 문제1.exe <실행결과> 100 200 172 적용 알고리즘 : 정렬
실전문제-1 Option Explicit Dim 시작줄, 끝줄, 레코드번호, 현재레코드 Dim 사원번호(1000), 상여금(1000), 이익포인트(1000), 금액(1000) Dim 매출액, 거래처등급, 첨자1, 첨자2, 임시, 카운트 Private Sub Form_Initialize() 시작줄 = Val(Left(Command, InStr(Command, " "))) 끝줄 = Val(Mid(Command, InStr(Command, " "))) Open "C:\c_it\data\abc11112.txt" For Input As #1 Open "C:\c_it\data\ans1.txt" For Output As #2 For 레코드번호 = 1 To 끝줄 If 레코드번호 < 시작줄 Then Line Input #1, 현재레코드 Else Line Input #1, 현재레코드 거래처등급 = Mid(현재레코드, 11, 1) ' 매출액과 거래처 등급을 가져옴 매출액 = Val(Mid(현재레코드, 22, 3)) If 매출액 >= 70 And UCase(거래처등급) = "A" Then ' 매출액과 거래처 등급의 조건 판단 카운트 = 카운트 + 1 ' 조건에 만족한 레코드만 배열에 저장 사원번호(카운트) = Val(Left(현재레코드, 6)) 상여금(카운트) = Val(Mid(현재레코드, 8, 3)) 이익포인트(카운트) = Val(Mid(현재레코드, 25, 3)) 금액(카운트) = 상여금(카운트) + 이익포인트(카운트) End If End If Next For 첨자1 = 1 To 카운트 - 1 ' 금액 내림차순, 같으면 사원번호 오름차순 For 첨자2 = 첨자1 + 1 To 카운트 If 금액(첨자1) < 금액(첨자2) Or 금액(첨자1) = 금액(첨자2) And사원번호(첨자1) > 사원번호(첨자2) Then 임시 = 금액(첨자1) : 금액(첨자1) = 금액(첨자2) : 금액(첨자2) = 임시 End If Next Next Print #2, 시작줄, 끝줄, 금액(5) Close #1 Close #2 End Sub
사원번호 사원등급 상여금 거래처등급 담당이메일 단가 수량 매출액 이익포인트 거래포인트 배달거리 숫(6) 문(1) 숫(3) 문(1) 문(4) 숫(3) 숫(3) 숫(3) 숫(3) 숫(3) 숫(3) 실전문제-2 문제2) 매출액이 70이상이면서 거래처등급이 ‘A’인 자료 중에서 (상여금 + 이익포인트)의 값 중 가장 큰 값을 출력하시오. 단, 동일값 발생시 하나만 출력하시오(20점) <처리조건> 1. 입력파일 레코드 구조 2. 명령어 인수 : 100, 200 3. 작업경로 : C:\C_it\data 4. 입력파일명(abc11112.txt), 출력파일명(ans2.txt) 5. 프로그램 파일명 : 문제2.frm , 문제2.vbp, 문제2.exe <실행결과> 100 200 239 적용 알고리즘 : 최대값
실전문제-2 Option Explicit Dim 시작줄, 끝줄, 레코드번호, 현재레코드 Dim 상여금(1000), 이익포인트(1000), 금액(1000) Dim 매출액, 거래처등급, 카운트, 최대값 Private Sub Form_Initialize() 시작줄 = Val(Left(Command, InStr(Command, " "))) 끝줄 = Val(Mid(Command, InStr(Command, " "))) Open "C:\c_it\data\abc11112.txt" For Input As #1 Open "C:\c_it\data\ans2.txt" For Output As #2 For 레코드번호 = 1 To 끝줄 If 레코드번호 < 시작줄 Then Line Input #1, 현재레코드 Else Line Input #1, 현재레코드 거래처등급 = Mid(현재레코드, 11, 1) 매출액 = Val(Mid(현재레코드, 22, 3)) If 매출액 >= 70 And UCase(거래처등급) = "A" Then 카운트 = 카운트 + 1 상여금(카운트) = Val(Mid(현재레코드, 8, 3)) 이익포인트(카운트) = Val(Mid(현재레코드, 25, 3)) 금액(카운트) = 상여금(카운트) + 이익포인트(카운트) If 최대값 < 금액(카운트) Then ' 금액중 최대값 구하기 최대값 = 금액(카운트) End If End If End If Next Print #2, 시작줄, 끝줄, 최대값 Close #1 Close #2 End Sub
사원번호 사원등급 상여금 거래처등급 담당이메일 단가 수량 매출액 이익포인트 거래포인트 배달거리 숫(6) 문(1) 숫(3) 문(1) 문(4) 숫(3) 숫(3) 숫(3) 숫(3) 숫(3) 숫(3) 실전문제-3 문제3) 거래처 등급에 따른 특별상여금이 다음 표와 같이 지급된다 거래처등급 특별상여금 A 5 B 15 C 20 위 표를 참조하여 거래포인트가 50인 자료에 대하여 (이익포인트+특별상여금)의 합계를 출력하시오(30점) <처리조건> 1. 입력파일 레코드 구조 2. 명령어 인수 : 100, 200 3. 작업경로 : C:\C_it\data 4. 입력파일명(abc11112.txt), 출력파일명(ans3.txt) 5. 프로그램 파일명 : 문제3.frm , 문제3.vbp, 문제3.exe <실행결과> 100 200 2908 적용 알고리즘 : 누적합계
실전문제-3 Option Explicit Dim 시작줄, 끝줄, 레코드번호, 현재레코드 Dim 거래처등급, 특별상여금, 거래포인트, 이익포인트, 합계 Private Sub Form_Initialize() 시작줄 = Val(Left(Command, InStr(Command, " "))) 끝줄 = Val(Mid(Command, InStr(Command, " "))) Open "C:\c_it\data\abc11112.txt" For Input As #1 Open "C:\c_it\data\ans3.txt" For Output As #2 For 레코드번호 = 1 To 끝줄 If 레코드번호 < 시작줄 Then Line Input #1, 현재레코드 Else Line Input #1, 현재레코드 거래포인트 = Val(Mid(현재레코드, 28, 3)) If 거래포인트 >= 50 Then ' 거래 포인트 50이상인 경우만 처리 이익포인트 = Val(Mid(현재레코드, 25, 3)) ' 이익포인트 불러옴 거래처등급 = Mid(현재레코드, 11, 1) ' 거래처등급에 따른 특별상여금 부여 Select Case UCase(거래처등급) Case "A": 특별상여금 = 5 Case "B": 특별상여금 = 15 Case "C": 특별상여금 = 20 Case else : 특별상여금 = 0 End Select 합계 = 합계 + (특별상여금 + 이익포인트) ' 특별상여금과 이익포인트의 누적합 End If End If Next Print #2, 시작줄, 끝줄, 합계 Close #1 Close #2 End Sub
사원번호 사원등급 상여금 거래처등급 담당이메일 단가 수량 매출액 이익포인트 거래포인트 배달거리 숫(6) 문(1) 숫(3) 문(1) 문(4) 숫(3) 숫(3) 숫(3) 숫(3) 숫(3) 숫(3) 실전문제-4 문제4) 사원등급에 따른 추가 포인트는 다음 표와 같다. 사원등급 추가포이트 A 5 B 15 C 20 위 표를 참조하여 배달거리가 30이상인 자료에 대하여 (상여금+추가포인트)의 합계를 출력하시오(30점) <처리조건> 1. 입력파일 레코드 구조 2. 명령어 인수 : 100, 200 3. 작업경로 : C:\C_it\data 4. 입력파일명(abc11112.txt), 출력파일명(ans4.txt) 5. 프로그램 파일명 : 문제4.frm , 문제4.vbp, 문제4.exe <실행결과> 100 200 6679 적용 알고리즘 : 누적합계
실전문제-4 Option Explicit Dim 시작줄, 끝줄, 레코드번호, 현재레코드 Dim 사원등급, 추가포인트, 상여금, 배달거리, 합계 Private Sub Form_Initialize() 시작줄 = Val(Left(Command, InStr(Command, " "))) 끝줄 = Val(Mid(Command, InStr(Command, " "))) Open "C:\c_it\data\abc11112.txt" For Input As #1 Open "C:\c_it\data\ans4.txt" For Output As #2 For 레코드번호 = 1 To 끝줄 If 레코드번호 < 시작줄 Then Line Input #1, 현재레코드 Else Line Input #1, 현재레코드 배달거리 = Val(Mid(현재레코드, 31, 3)) If 배달거리 >= 30 Then ' 배달거리가 30이상인 경우만 처리 상여금 = Val(Mid(현재레코드, 8, 3)) ' 이익포인트 불러옴 사원등급 = Mid(현재레코드, 7, 1) ' 거래처등급에 따른 특별상여금 부여 Select Case UCase(사원등급) Case "A“ : 추가포인트 = 5 Case "B“ : 추가포인트 = 15 Case "C“ : 추가포인트 = 20 Case else : 추가포인트 = 0 End Select 합계 = 합계 + (상여금 + 추가포인트) ' 상여금과 추가포인트의 누적합 End If End If Next Print #2, 시작줄, 끝줄, 합계 Close #1 Close #2 End Sub