티스토리 뷰
* 프로그램 개요 및 기능
/* 다항식의 덧셈과 뺄셈을 수행할 수 있다. */
1. 사용자가 입력한 두 개의 다항식을 덧셈연산 할 수 있다.
2. 사용자가 입력한 두 개의 다항식을 뺄셈연산 할 수 있다.
3. Roll Back 기능으로 기존에 입력했던 데이터를 반납하고 프로그램을 다시 시작할 수 있다.
/* 연결리스트로 구현된 다항식 프로그램으로 동적할당과 메모리 반납이 이루어집니다. */
* 프로그램 실행화면 및 간략 설명
<1>
/* 연산을 원하는 두 개의 다항식을 입력한다. 차수를 표시해줄 때는 '^'기호를 사용하며 빈칸을 포함하여 입력이 가능하다. */
/* 사용자가 입력한 다항식은 문자열로 저장되며 문자열에서 정보들을 추출하여
동적할당으로 계수(coefficient)와 지수(exponent)로 구성된 구조체를 만들어 정보를 저장한다. */
<2>
/* 1번을 누르면 덧셈연산을 한 결과를 출력한다. (1) + (2) 순으로 덧셈이 이루어진다. */
/* 실제 연산은 동적으로 할당된 각 노드들을 방문하여 지수와 계수 정보로만 연산을 한다.
연산 결과 또한 지수와 계수 정보를 적절히 추출하여 문자열로 출력한다. */
<3>
/* 2번을 누르면 덧셈연산을 한 결과를 출력한다. (1) - (2) 순으로 뺄셈이 이루어진다. */
<4>
/* 3번을 누르면 기존에 할당 받았던 메모리를 반납하고 다항식을 입력하는 부분으로 돌아가 다시 시작한다. */
/* 동적으로 할당된 노드들을 차례대로 방문하며 메모리를 반납한다. */
* 코멘트 (구현할 때 어려웠던 점 및 과정 포함)
사용자가 입력한 문자열에서 계수(coefficient) 정보와 지수(exponent) 정보를 추출하여 동적할당된 구조체에 저장하는 작업이 제일 어려웠다. 여러가지 변수와 경우의 수가 많았기 때문인데, 이를 해결하기 위해 제일 먼저 만들어줬던 것이 빈칸 삭제 알고리즘이다.
그 다음으로는 문자열을 입력할 때 발생할 수 있는 대다수의 경우의 수를 직접 써보며 (처음에 음수가 나올 경우, 계수가 2자리수 이상인 경우 등) 정리하였고 정리된 결과를 바탕으로 알고리즘을 작성했다.
이 정도 줄수의 프로그램을 C로 구현한 것은 거의 처음이었고, 상당히 많은 경우의 수를 거쳐 문자열을 처리하는 과정에서 사고력 훈련을 할 수 있었다. 프로그램이든 실생활의 문제든, 복잡해 보일 수록 하나 하나 작개 쪼개어 분석하고 나누어 보면 해결할 수 있다는 자신감 또한 얻었다.
/* 제 소스코드의 단점을 보완하신 분은 댓글이나 dlgusdn616@naver.com로 메일 부탁드립니다. */
/* 소스코드는 아래 Git link로 첨부합니다. 궁금하신 게 있다면 댓글에 달아주시면 감사하겠습니다. */
'Develop Story > C' 카테고리의 다른 글
C 언어 게임 프로그래밍 #1 : 배틀 테트리스 (5) | 2017.06.10 |
---|---|
<C 프로그래밍 #4> : 중위식을 후위식으로 변환하는 프로그램 (0) | 2017.06.10 |
<C 프로그래밍 #2> : 희소행렬 프로그램 (0) | 2017.06.10 |
<C 프로그래밍 #1> : 순환을 이용한 프로그램 (0) | 2017.06.10 |
[C언어 / 가이드] 처음 C 언어 공부를 시작하시는 분들께 (6) | 2017.02.08 |
- Total
- Today
- Yesterday