책 내용 질문하기
정답과 제시된 변수의 활용이 애매합니다.
도서
2021 시나공 정보처리산업기사 실기
페이지
280,281
조회수
492
작성일
2021-07-09
작성자
탈퇴*원
첨부파일

플로차트에 정의된 변수들 중에서 변수 N 은 입력 받은 숫자의 개수가 저장될 변수 라고 정의되어 있습니다.

이 말은 즉, N의 값은 곧 배열 인덱스의 첨자로 사용 될 수 있습니다. 

숫자를 10개 입력 받는다면 N 값은 10이 됩니다.

 

14번 라인의 빈칸 (③  )에 올 값은 각 회전에서 비교할 횟수를 판단 하는 것으로

배열의 값이 총 "10개"가 들어있으면 "10-회전수" 라고 오른쪽에 친히 설명이 되어있는데요.

 

마찬가지로 정수 "10"이 아닌 입력받은 숫자의 개수라고 정의한 변수 "N" 을 활용한다면

배열에는 값이 총 N개가 들어있게 되며 N-회전수 즉 변수"N"의 값은 "10"이므로 "N-i" 라는 식이 성립 되는것이 아니냐는 질문입니다.

정의한 변수 "N"을 적극적으로 활용할 수 있게 되는 것 이죠. 

 

만약 변수 N이 플로차트에 정의되지 않았다면 활용하지 않고 그냥 정수 10으로 나타내어 J<10-i 라고 할 수 있겠습니다.

하지만 분명 위에서 N을 "입력받은 숫자의 개수가 저장될 변수"라고 정의했음에도 불구하고, 변수를 활용하지 않고 

입력받은 숫자의 갯수를 정수10으로 표현했다는것은 오류가 있다고 생각합니다.

 

정답지의 정답은 J<N-i가 아니라 J<10-i 라고 나와 있습니다.

 

이것은 다음장인 281쪽의 C언어 코드에도 똑같이 적용됩니다.

 

 

변수 N을 활용하지 않고 정수 9으로 표현한 코드↓

 

  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. int n, i, j, k;
  5. int data[10];
  6. n=-1;
  7.  
  8. do{
  9. n++;
  10. scanf("%d", &data[n]);
  11. }while(n<9);
  12. i=0;
  13. do{
  14. i++;
  15. j=-1;
  16. do{
  17. j++;
  18. if(data[j] > data[j+1]){
  19. k = data[j];
  20. data[j] = data[j+1];
  21. data[j+1] = k;
  22. }
  23. }while(j<9-i);
  24.  
  25. }while(i<9);
  26. for(int x=0; x<=9; x++){
  27. printf("%d",data[x]);
  28. }
  29. }

변수 N을 정수 9대신 활용한 코드 ↓
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. int n, i, j, k;
  5. int data[10];
  6. n=-1;
  7.  
  8. do{
  9. n++;
  10. scanf("%d", &data[n]);
  11. }while(n<9);
  12. i=0;
  13. do{
  14. i++;
  15. j=-1;
  16. do{
  17. j++;
  18. if(data[j] > data[j+1]){
  19. k = data[j];
  20. data[j] = data[j+1];
  21. data[j+1] = k;
  22. }
  23. }while(j<n-i);
  24.  
  25. }while(i<9);
  26. for(int x=0; x<=9; x++){
  27. printf("%d",data[x]);
  28. }
  29. }


이렇게 작성한다면 정상적으로 컴파일 됩니다.
제가 시험장에 갔을때 어떻게 기술해야 하나요?
이거 진짜 문제가 좀 있는거같은데
변수의 뜻이 정수와 같으므로 변수를 활용하는게 답이 되는게 맞지않나요?
만약 문제집대로 정수를 이용해서 풀었는데 틀린다면 길벗에서 책임을 지는것인지
...
시험이 당장 2021년 07월 10일 토요일인 내일입니다.
어려운 내용이 아니니 2021년 07월 09일 금요일 오늘 안으로 답변 부탁드립니다.


답변
2021-07-12 10:31:47

안녕하세요 길벗수험서 운영팀입니다.

 

답변이 늦어져 사과드립니다.

3번 괄호의 경우 J < (N-i) 를 사용하셔도 정답으로 인정됩니다. 

 

실제 시험장에서는 순서도이든 코드이든 문제에서 언급한 <처리 조건>만 준수된다면 어떠한 방법을 사용하든 올바른 결과만 나온다면 정답으로 인정됩니다.

 

참고로 교재에 수록된 대부분의 순서도는 실제 시험에 나왔던 순서도를 복원하여 나타낸 것으로 실제 시험에도 동일하게 나올 수 있음을 염두에 두시기 바랍니다.

 

행복한 하루되세요 :)

  • 관리자
    2021-07-12 10:31:47

    안녕하세요 길벗수험서 운영팀입니다.

     

    답변이 늦어져 사과드립니다.

    3번 괄호의 경우 J < (N-i) 를 사용하셔도 정답으로 인정됩니다. 

     

    실제 시험장에서는 순서도이든 코드이든 문제에서 언급한 <처리 조건>만 준수된다면 어떠한 방법을 사용하든 올바른 결과만 나온다면 정답으로 인정됩니다.

     

    참고로 교재에 수록된 대부분의 순서도는 실제 시험에 나왔던 순서도를 복원하여 나타낸 것으로 실제 시험에도 동일하게 나올 수 있음을 염두에 두시기 바랍니다.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.