Q. 100건 이내의 1자리로 구성된 숫자를 더하는 순서도를 작성하시오. 단 12자리의 숫자는 각 자리가 분리되어 배열에 입력된다. 예를들어 999,999,999,999 라면 9 9 9 9 9 9 9 9 9 9 9 9 와 같이 입력된다. 단, 배열의 첫 번째 요소로 0을 입력받으면 계산후 결과를 출력하고 프로그램을 종료한다.단, 결과값이 들어갈 배열에는 초기 값으로 0이 들어가 있다고 가정한다.
1. 입력하는 값을 저장할 배열 A와 더한 값이 누적될 배열 B를 선언한다.
2. 한개의 수치를 12자리로 분리하여 각각 입력받아야 하므로 반복 변수 i가 1에서 12까지 1씩 증가하면서 반복한다.
1) 개별 숫자를 입력받는다. 그리고 반복을 체크한다.
3. A(1)의 값이 0이면 입력을 모두 마쳤으므로 자리올림 수를 지정하기 위해 Yes로 가고 아니면 입력받은 자료를 누적하고 다음 자료를 입력받기 위해 NO로 간다.
1) Yes일 경우, 4로 간다.
2) NO일 경우, 5으로 간다.
4. 배열 B의 각 자리에서 자리올림 수를 계산한다. 배열의 맨 뒷자리부터 계상해야 하기 때문에 반복변수 i는 14에서 2까지 -1 씩 증가하면서 반복한다. 첫 번째 자리는 자리 올림 수만 받아서 저장하면 되므로 자리올림 수를 계산하지 않는다.
1) 자리올림 수를 계상하기 위해 배열 B의 각 자리에 저장된 값을 10으로 나눠 몫을 구한다.
2) 나머지를 계산한다.
3) 나머지를 해당 자리에 저장한다.
4) 자리올림 수인 몫을 한자리 높은 자리(배열의 한 칸 왼쪽)의 값을 더한다. 그리고 반복 체크를 한다.
5) 반복이 종료되면 6으로 간다.
5. 배열 A에 입력받은 자료를 배열 B에 누적한다. A배열의 요소가 1개 이므로 반복변수 i가 1에서 12까지 1씩 증가하면서 반복한다.
1) 배열 B의 첫번째와 두 번째 자리는 자리올림수가 저장될 자리이므로 세번째 자리부터 누적한다. 그리고 반복 체크한다.
2) 반복이 끝나면, 2번으로 간다.
6. 첫번째 자리까지 자리올림이 발생했는지 판단한다. 자리올림이 발생하면 첫번째 자리부터 출력된다는 것을 생각한다.
1) 같다면, 배열의 시작 위치를 2로 한다.
2) 다르다면 배열의 시작 위치를 1로 한다.
7. 배열 B를 출력한다. 배열의 요소가 14개이므로 반복변수 i가 J에서 14가 될때까지 1씩 증가하면서 반복한다.
1) B(i)를 출력하고 끝낸다.
해당 글은 제가 만든 어플을 기준으로 작성하였습니다.
더 많은 정보는 알고리즘 어플을 이용해주세요.
'Study > Algorithm_정보처리기사' 카테고리의 다른 글
[정보처리기사][알고리즘][자료구조] 선택정렬 (2) | 2015.08.21 |
---|---|
[정보처리기사][알고리즘][수학] 이진수 더하기 (0) | 2015.08.15 |
[정보처리기사][알고리즘][수학] 그레이코드 변환하기 (0) | 2015.08.15 |
[정보처리기사][알고리즘][수학] 보수의 보수 구하기 (2) | 2015.08.15 |
[정보처리기사][알고리즘][수학] 2의 보수 쉽게 구하기 (0) | 2015.08.15 |
댓글