이번 문제가 이해가 잘안됩니다.
190페이지에 A(1)=0이라는 조건문이 이해가 안됩니다.
12자리의 숫자 100건이면 999 999 999 999 를 100 건있다치면 최대 2자리 늘어나서 B가 14가 되는것과
각 자리를 순환하면서 더해 배열안에 ex) 56 59 20 30 50 이런식으로 더해서 자리수를 자리올림을 통해 맞춰주는것까지 이해 되는데
문제지문에 배열의 첫번째 요소로 0을 입력받으면 계산후 결과를 출력하고 프로그램을 종료한다. 단 결과값이 들어갈 배열에는 초기 값으로 0이 들어있다고 가정한다.
이부분과 A(1)=0 이란 부분 설명 부탁드립니다.
위 조건이 뜻하는게 12자리의 숫자중 마지막엔 000 000 000 000 을 입력되어있어 계산을 하게 만드는 건가요?
안녕하세요 길벗수험서 운영팀입니다.
[1] A(1)=0
문제에서 '100건 이내의 12리로 구성된 숫자를 더하는 순서도' 라고 말하고 있습니다.
이는 숫자가 몇 건이 저장될 지 알 수 없다는 것이죠.
때문에 숫자를 원하는 건 수 만큼 저장한 후, 이를 종료하는 조건의 입력을 산정해야 합니다.
이것이
"배열의 첫 번째 요소로 0을 입력 받으면 계산 후 결과를 출력"
이라는 문구입니다.
즉, 더하려는 수를 모두(100건 이하의 몇건이든) 입력한 후, 첫 값(A(1))에 '0'이 저장된 수가 들어온다면 해당 수는 더해지지 않고, 조건문 A(1)=0을 만나 계산 과정으로 빠져나가게 됩니다.
--------------------
[2] 초기 값으로 0
이것은 약간의 프로그래밍적 지식이 필요합니다.
프로그래밍에서 변수나 배열을 선언하는 경우 초기화되지 않는 언어들이 있습니다.
변수 a를 선언하여 바로 다시 a를 출력하는 아래와 같은 코드가 있을 때, 에러 또는 예상하지 못한 값이 출력되게 되죠.
int a;
print a;
a에는 아무 수도 저장되어 있지 않은 '정의되지 않은 값(undefined value)'이 있기 때문입니다.
당연히 아래의 코드도 문제가 발생하겠죠.
int b(14);
b(3) = b(3) + 2;
배열 b의 각 요소는 정의되지 않은 값이 저장되어있기 때문에 b(3)이라는 값에 2를 더하는 계산은 불가능하게 됩니다.
이것이 초기화되지 않은 190쪽 순서도 6번이 됩니다.
이러한 경우를 방지하기 위해서 0으로 초기화시킨다는 단서가 붙게되는 것이죠.
(이 경우 b(3) = 0 + 2 가 되니, b(3)에 2가 정상적으로 저장되게 됩니다.)
행복한 하루되세요 :)
-
관리자2019-08-08 14:17:10
안녕하세요 길벗수험서 운영팀입니다.
[1] A(1)=0
문제에서 '100건 이내의 12리로 구성된 숫자를 더하는 순서도' 라고 말하고 있습니다.
이는 숫자가 몇 건이 저장될 지 알 수 없다는 것이죠.
때문에 숫자를 원하는 건 수 만큼 저장한 후, 이를 종료하는 조건의 입력을 산정해야 합니다.
이것이
"배열의 첫 번째 요소로 0을 입력 받으면 계산 후 결과를 출력"
이라는 문구입니다.
즉, 더하려는 수를 모두(100건 이하의 몇건이든) 입력한 후, 첫 값(A(1))에 '0'이 저장된 수가 들어온다면 해당 수는 더해지지 않고, 조건문 A(1)=0을 만나 계산 과정으로 빠져나가게 됩니다.
--------------------
[2] 초기 값으로 0
이것은 약간의 프로그래밍적 지식이 필요합니다.
프로그래밍에서 변수나 배열을 선언하는 경우 초기화되지 않는 언어들이 있습니다.
변수 a를 선언하여 바로 다시 a를 출력하는 아래와 같은 코드가 있을 때, 에러 또는 예상하지 못한 값이 출력되게 되죠.
int a;
print a;
a에는 아무 수도 저장되어 있지 않은 '정의되지 않은 값(undefined value)'이 있기 때문입니다.
당연히 아래의 코드도 문제가 발생하겠죠.
int b(14);
b(3) = b(3) + 2;
배열 b의 각 요소는 정의되지 않은 값이 저장되어있기 때문에 b(3)이라는 값에 2를 더하는 계산은 불가능하게 됩니다.
이것이 초기화되지 않은 190쪽 순서도 6번이 됩니다.
이러한 경우를 방지하기 위해서 0으로 초기화시킨다는 단서가 붙게되는 것이죠.
(이 경우 b(3) = 0 + 2 가 되니, b(3)에 2가 정상적으로 저장되게 됩니다.)
행복한 하루되세요 :)
-
관리자2019-08-09 10:24:59
안녕하세요 길벗수험서 운영팀입니다.
예, 이해하신 것이 맞습니다.
배열 B 표로 나타내면 아래와 같이 되겠죠.
배열 B
B[1]
B[2]
B[3]
B[4]
B[5]
B[6]
B[7]
B[8]
B[9]
B[10]
B[11]
B[12]
B[13]
B[14]
값
0
0
0
0
0
0
0
0
0
0
0
0
0
0
----------------
196페이지에 대해서는 제가 추가 설명드릴 것도 없이 정확하게 이해하고 계십니다.
배열은 <출력형식>의 빈칸 부분만을 가리켜 11행 8열이 되며, 동의 합계는 동의 행 8열, 나이대의 합계는 11행 나이대의 열에 저장됩니다.
행복한 하루되세요 :)
-
*2019-08-08 16:16:59
답변 잘 읽었습니다.
제가 이해한게 맞는지 확인 부탁드립니다. 결국 B 배열에 대해 값이 없으니 지문에서 B배열에 초기값을 0이라 가정한다는 말이 되는건가요??
배열 B [00000000000000] 이렇게 들어있다는 말인가요??
추가로 196페이지 질문입니다;;
여기서 출력형식으로 나온 표를 보면 동 0~9 10~19... 행열 이렇게 표가 있는데 외곽은 무시하고 ROW COL의 1이 되는 기준은 빈칸부분부터라 보면 되나요?? 데이터가 아직 없는 부분? 외곽 표의 동을 기준으로 행 열을 포함하고 계산을 하니 ROW=DONG+1 COL=INT(NAI/10)+1이라 했는데 답은 DONG에 +1을 안붙이고 나이는 0~9살을 나타내기위해 +1을하던거라 우연하게 맞았어요 표기준이
동
0~9
10~19
...
1
2
3
빨간 부분만 포함되는거 맞죠?? 0~9밑에서부터 1,1로
그리고 문제에 기본위치와 열 합계 행 합계 전체합계는똑같은 동과 나이대가 나왔을때 누적하기위해 기본위치를 누적하고
같은 동의 합계를 위해서 (ROW,8)을 누적하고
같은 나이대합계를 위해서 (11,COL)을 누적하고
전체의 합계를 위해 (11,8)을 누적계산하는거 맞나요?