플로차트에 정의된 변수들 중에서 변수 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으로 표현한 코드↓
- #include <stdio.h>
- int main(void) {
- int n, i, j, k;
- int data[10];
- n=-1;
- do{
- n++;
- }while(n<9);
- i=0;
- do{
- i++;
- j=-1;
- do{
- j++;
- if(data[j] > data[j+1]){
- k = data[j];
- data[j] = data[j+1];
- data[j+1] = k;
- }
- }while(j<9-i);
- }while(i<9);
- for(int x=0; x<=9; x++){
- }
- }
- #include <stdio.h>
- int main(void) {
- int n, i, j, k;
- int data[10];
- n=-1;
- do{
- n++;
- }while(n<9);
- i=0;
- do{
- i++;
- j=-1;
- do{
- j++;
- if(data[j] > data[j+1]){
- k = data[j];
- data[j] = data[j+1];
- data[j+1] = k;
- }
- }while(j<n-i);
- }while(i<9);
- for(int x=0; x<=9; x++){
- }
- }
안녕하세요 길벗수험서 운영팀입니다.
답변이 늦어져 사과드립니다.
3번 괄호의 경우 J < (N-i) 를 사용하셔도 정답으로 인정됩니다.
실제 시험장에서는 순서도이든 코드이든 문제에서 언급한 <처리 조건>만 준수된다면 어떠한 방법을 사용하든 올바른 결과만 나온다면 정답으로 인정됩니다.
참고로 교재에 수록된 대부분의 순서도는 실제 시험에 나왔던 순서도를 복원하여 나타낸 것으로 실제 시험에도 동일하게 나올 수 있음을 염두에 두시기 바랍니다.
행복한 하루되세요 :)
-
관리자2021-07-12 10:31:47
안녕하세요 길벗수험서 운영팀입니다.
답변이 늦어져 사과드립니다.
3번 괄호의 경우 J < (N-i) 를 사용하셔도 정답으로 인정됩니다.
실제 시험장에서는 순서도이든 코드이든 문제에서 언급한 <처리 조건>만 준수된다면 어떠한 방법을 사용하든 올바른 결과만 나온다면 정답으로 인정됩니다.
참고로 교재에 수록된 대부분의 순서도는 실제 시험에 나왔던 순서도를 복원하여 나타낸 것으로 실제 시험에도 동일하게 나올 수 있음을 염두에 두시기 바랍니다.
행복한 하루되세요 :)