태그 보관물: 기출문제

정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)

이 글은 제가 2016년 3월 25일에 작성한 내용을 일부 수정하여 다시 업로드 한 내용이다.

화폐 단위별 매수 알고리즘

그럼 지금 부터 화폐 단위별 매수 알고리즘에 관해서 한번 살펴보겠다. 필자도 공부하는 입장이기 때문에 잘못된 부분이 있을수 있고, 또한 꼭 이방법이 완벽하지는 않다는것은 참고하길 바란다.

화폐 단위별 매수 알고리즘은 아래 그림처럼 출력되는 구조이다.

[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]

[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]

이런식으로 출력이 되어야 한다. 다만, 막상 코딩에 들어가니, 생각보다 결과물이 만족스럽게 나오지는 않을수 있다.

아래는 알고리즘 구성도이다.

[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]

[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]

그림판으로 그렸는데, 생각처럼 구성도가 이쁘게 나오지 않는다. 이 순서도는 화폐 단위별 매수 알고리즘이다. 생각보다 복잡하게 보이는것 같다.

현재 알고리즘 구성도를 설명드리면, 배열 TM과 PM을 선언 한다. TM은 화폐단위별 총합이고, PM은 화폐단위별이다. 첫번째 반복문에서는 각 배열은 초기화 시켜준다.

그리고, 사용자 이름 및 출장비를 입력받도록 한다. 이름을 “QUIT”입력하였을 경우에는 출력과 동시에 프로그램이 종료되도록 해야된다.
[ads-m1]
입력된 화폐금액은 T 라는 임시 변수에 저장을 해놓고, 이 T라는 변수로 진행을 하도록 한다.

M=50,000 은 오만원이 최고 금액이니 선언하고, SW=1은 5로 나누는 부분으로 진행을 하도록 할때 사용 된다.

두번째 반복문은 실질적인 화폐단위별 계산하는 방법이다. 오만원, 만원 등의 개수가 몇개인지를 계산하는것이다.

PM(K)=T/M 같은 경우에는 내가 입력한 출장비와 오만원을 나눠서 떨어지는 값을 PM배열에 저장해놨다.

또한 그다음 줄 T=T-(PM(K)*M) 은 예를들어 52000원이면 2000원만 남도록 하기 위해서 만들어놓은 수식이다.

이렇게 10까지 반복적으로 오만원 ~ 일원까지 계속 나눠서 떨어질때까지 계산한다. 밑에 M=M/5 와 M=M/2 같은경우에는 숫자 오만원, 만원,오천원 등으로 나누는 화폐이다.

그리고 마지막으로 총 화폐단위를 합해서 출력을 하는식으로 간다.

c언어 코딩

뭐가 정신없이 많다. 일단 구조체를 사용해서 이름을 저장할수있는 공간을 마련하였다. 화폐 단위도 함께 지정해야되는데.. 처음에 짠것을 수정하고 수정하고 하다보니 엉망이 되어버린거 같다.

웬만하면 순서도에 맞춰서 그대로 해볼려고 하다가 만족스럽지 않은 코딩이 나와버리게 되었다.

[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]

[사진 = 정보처리 기사 기출문제 화폐 단위별 매수 알고리즘(c언어)]

출력한 모습이다. 이름을 a,b 로 간단하게 적었다. 또한 맨 오른쪽 숫자부터, 오만원 ~ 일원 까지 순서대로 인데… 역시나 이쁘장하게 만들기보다는 핵심적인부분만을 알기 위해서 그냥 그렇게 코딩을 하였지만. 코딩 길이도 생각보다 엄청 길게 나와서 실망스럽다.