| | | 제 목 | "05.5.11.오후 기출문제 4번 답에서 | | | 글쓴이 | 박찬상 | 작성일 | 2005-07-03 | 조회수 | 502 | | | 글공유 | |
| | | >>''''05.5.11.오후 기출문제 4번 문제(합계) 풀고서 궁금하여,,,,,
표처리 부분입니다. 기사친구 자료실에 올려 논 답을 보면
''''표처리 select case 예약금액 case is >= 7001 사은포인트 = 2500+(예약금액*4) case is >= 6001 사은포인트 = 2000+(예약금액*3) case is <= 6000 사은포인트 = 1500+(예약금액*2) end select 로 되어 있는데, 거꾸로 가니 헷갈리네요,,이것을 표에 나온 순서대로
case is <= 6000 사은포인트 = 1500+(예약금액*2) case is >= 6001 사은포인트 = 2000+(예약금액*3) case is >= 7001 사은포인트 = 2500+(예약금액*4) 로 해도 됩니까? 거꾸로 가니 헷갈리네요 --------------------------------------------------------------------
select문에 단점 때문에 그렀습니다. 저도 교수님께 이부분에 대해서
질문을 했었는데요. select문은 논리 연산자 and나or 같은 연산자를
사용 할 수 없습니다. 즉, 부등호의 관계(부등호의 범위)를 잘 생각해보
시길...case is >= 6001 이 식이 먼저 오게 되면 7001과 그 이상의 값을
전부 포함하게 됩니다.
case is >= 7001 사은포인트 = 2500+(예약금액*4)
분명히 세번째 case에서 7001과 그 이상의 값일 때는 사은포인트가 다르게
적용된다고 선언하였지만 두번째 case의 부등호의 범위 때문에 세번째
case는 적용되지 않습니다. 실제로 실행을 해보시면 결과값이 틀리게 나오는걸
확인 할 수 있습니다.
case is >= 7001 을 먼저 선언하고 case is >= 6001 뒤에 선언하게 되면 select문은
6001 ~ 7000 까지만을 인식하게 됩니다. 교수님의 강의를 보시면 이부분을 언급
하는 내용이 있습니다.
그렇다면 범위 표처리는 항상 역으로 코딩을 해야할까요? 그건 아닙니다. 기출문제
고급유형을 보시면 각각의 값의 범위(부등호의 관계)가 서로에게 전혀 영향을 주지
않는 문제가 나옵니다. 이런 문제는 순서대로 코딩해도(순서는 아무 상관없습니다.)
아무 상관이 없습니다. 단지, 어떤 문제는 역으로 하고 어떤 문제는 순서대로 하고
이러면 실수로 코딩을 잘못 할 수 있는 가능성이 있기 때문에 범위 표처리 문제가
나오면 역으로(밑에서 위로) 코딩을 하시는게 나을듯 싶습니다. 참고로 기출문제는
제가 대부분 다 봤는데요. 역으로 해서 그 범주를 벋어 나는 문제는 없었습니다.
혹여나 순서대로 해야 범위가 제대로 되는 문제가 나올 수도 있겠지만 그 확률은
거의 없다고 봐야 할거 같습니다. 글이 너무 길었군요. 제대로 답이 됬는지 모르겠습니다.
꼭!합격 하실길...화이팅~!^^
| |
|
|