무슨 자료를 넣고 실행되는지 알려줘야 하는거 아닌가요?
void main() {
int i, j, mok, nmg;
int a[6], b[8] = { 0 };
while (1) {
for (i = 0; i <= 11; i++) {
scanf("%d", &a[i]);
}
if (a[0] == 0)break;
else
for (i = 0; i <= 5; i++){ b[i + 2] += a[i]; }
}
for (i = 7; i >= 1; i-) {
mok = b[i] / 10;
nmg = b[i] - mok * 10;
b[i] = nmg;
b[i - 1] += mok;
}
if (b[0] == 0) j = 1;
else j = 0;
for (i = j; i <= 7; i++) printf("%d", b[i]);
}
이 반복문에서
if (a[0] == 0)break;
이걸 왜 집어 넣나요? 이해가 안되네여 애초에 무엇을 가정하고 c언어 코드를 짠건지도 모르겠네요.
1번
a[0] = 177
a[1] = 186
해서 18 목 6 나머지 하고
a[0]에 177 + 18 = 195 로 넘어 간다는 소스 인가요? 아니면
2번
a[0] = 1
a[1] = 7
a[2] = 7
이런 식으로 표현 하라는 건가요?
1차원 배열로 위 숫자를 넣으면 이 책에 나온 알고리즘으로는 1번 으로 하라는 거 같은데 뭐 무슨 결과를 원하는 소스죠? 그냥 쓰지 말지 a[0]부터 값을 읽는데 뭐 어떻게
while문을 종료하라고 하는 겁니까?
안녕하세요. 길벗 수험서 운영팀입니다.
먼저 해당 문제는 특정 값을 입력하여 결과를 도출하는 프로그램 코드 작성이 아닌, 문제의 순서도를 C 코드로 구현한 것입니다. 때문에 효율적이고 적합한 프로그래밍 보다는 순서도와 일치하도록 코드를 작성하는데 주안점을 맞춘 것이기 때문에 보기에 불편하실 수 있다는 점 양해 부탁드립니다.
1. 무슨 자료를 넣고 실행되는지 알려줘야 하는거 아닌가요?
[답변]
예, 아닙니다.
문의하신 ‘섹션030’의 문제는 알고리즘 구현에 대한 단서만 있을 뿐, 입력 값에 대한 내용은 없습니다. 때문에 정해진 입력 값은 존재할 수 없으며, 수험자가 직접 임의의 값을 정하여 디버깅하는 과정을 통해 문제를 해결하여야 합니다.
242page를 보시면 순서도에서 자리수를 제한하여 임의의 값을 넣어 디버깅하는 과정이 있으니 참고하시기 바랍니다.
2. 이 반복문에서 if (a[0] == 0)break;
이걸 왜 집어 넣나요? 이해가 안되네여 애초에 무엇을 가정하고 c언어 코드를 짠건지도 모르겠네요.
[답변]
서두에서 말씀드렸듯이 순서도와 일치하는 코드를 작성하기 위해서였습니다.
해당 부분은 순서도의 ④에 해당하는 부분입니다.
a[0]에 0이 들어간 것을 확인하기 위해서는 배열 a에 12자리 숫자를 모두 입력해야 하는 번거로움이 있으나, 순서도와 가능한 정확히 일치하는 코드를 보여드리고자 동일하게 작성하였습니다.
3. 1번 a[0] = 177 a[1] = 186 해서 18 목 6 나머지 하고 a[0]에 177 + 18 = 195 로 넘어 간다는 소스 인가요?
아니면 2번 a[0] = 1 a[1] = 7 a[2] = 7 이런 식으로 표현 하라는 건가요?
[답변]
2번이 맞습니다.
문제에서 “단, 12자리의 숫자는 각 자리가 분리되어 배열에 입력된다.”라고 되어 있습니다.
또한 문제 아래의 [알고리즘의 이해] 부분에서도 각각의 자리로 분리하여 입력받은 후 배열 B의 각 자릿수에 맞게 누적하여 덧셈을 한다고 언급되어 있습니다.
[알고리즘의 이해]와 순서도의 각 설명들을 염두해 두고 코드를 읽어보세요.
4. 무슨 결과를 원하는 소스죠? 그냥 쓰지 말지 a[0]부터 값을 읽는데 뭐 어떻게 while문을 종료하라고 하는 겁니까?
[답변]
알고리즘의 이해, 순서도의 각 설명, 정답의 디버깅표를 참고하시어 해당 알고리즘을 다시 한 번 살펴보시기 바랍니다.
각 자리수를 배열에 입력하게 될 경우 첫 자리 수에 0이 입력되면 "if(a[0] == 0) break;"에 의해 while문이 종료됩니다.
행복한 하루되세요.^^
-
*2018-09-05 11:29:06
안녕하세요. 길벗 수험서 운영팀입니다.
먼저 해당 문제는 특정 값을 입력하여 결과를 도출하는 프로그램 코드 작성이 아닌, 문제의 순서도를 C 코드로 구현한 것입니다. 때문에 효율적이고 적합한 프로그래밍 보다는 순서도와 일치하도록 코드를 작성하는데 주안점을 맞춘 것이기 때문에 보기에 불편하실 수 있다는 점 양해 부탁드립니다.
1. 무슨 자료를 넣고 실행되는지 알려줘야 하는거 아닌가요?
[답변]
예, 아닙니다.
문의하신 ‘섹션030’의 문제는 알고리즘 구현에 대한 단서만 있을 뿐, 입력 값에 대한 내용은 없습니다. 때문에 정해진 입력 값은 존재할 수 없으며, 수험자가 직접 임의의 값을 정하여 디버깅하는 과정을 통해 문제를 해결하여야 합니다.
242page를 보시면 순서도에서 자리수를 제한하여 임의의 값을 넣어 디버깅하는 과정이 있으니 참고하시기 바랍니다.
2. 이 반복문에서 if (a[0] == 0)break;
이걸 왜 집어 넣나요? 이해가 안되네여 애초에 무엇을 가정하고 c언어 코드를 짠건지도 모르겠네요.
[답변]
서두에서 말씀드렸듯이 순서도와 일치하는 코드를 작성하기 위해서였습니다.
해당 부분은 순서도의 ④에 해당하는 부분입니다.
a[0]에 0이 들어간 것을 확인하기 위해서는 배열 a에 12자리 숫자를 모두 입력해야 하는 번거로움이 있으나, 순서도와 가능한 정확히 일치하는 코드를 보여드리고자 동일하게 작성하였습니다.
3. 1번 a[0] = 177 a[1] = 186 해서 18 목 6 나머지 하고 a[0]에 177 + 18 = 195 로 넘어 간다는 소스 인가요?
아니면 2번 a[0] = 1 a[1] = 7 a[2] = 7 이런 식으로 표현 하라는 건가요?
[답변]
2번이 맞습니다.
문제에서 “단, 12자리의 숫자는 각 자리가 분리되어 배열에 입력된다.”라고 되어 있습니다.
또한 문제 아래의 [알고리즘의 이해] 부분에서도 각각의 자리로 분리하여 입력받은 후 배열 B의 각 자릿수에 맞게 누적하여 덧셈을 한다고 언급되어 있습니다.
[알고리즘의 이해]와 순서도의 각 설명들을 염두해 두고 코드를 읽어보세요.
4. 무슨 결과를 원하는 소스죠? 그냥 쓰지 말지 a[0]부터 값을 읽는데 뭐 어떻게 while문을 종료하라고 하는 겁니까?
[답변]
알고리즘의 이해, 순서도의 각 설명, 정답의 디버깅표를 참고하시어 해당 알고리즘을 다시 한 번 살펴보시기 바랍니다.
각 자리수를 배열에 입력하게 될 경우 첫 자리 수에 0이 입력되면 "if(a[0] == 0) break;"에 의해 while문이 종료됩니다.
행복한 하루되세요.^^