로켓단_C assign #2 : 계산기

계산기입니다.
input.txt 파일에 255바이트 이하의 식을 적으면(괄호가 있어도 OK... 그러나 막 5 * * 5 * 19 이런거 넣으시면 책임 안짐. 못짐. 솔직히 255 꽉 채우면, 뭔가 문제가 생길지도 모름.=_=;;;;;;;;;;)
답에 따라 내림차순으로 정렬한 뒤 output.txt에 적혀 나옵니다.
단장님이 시킨거에는 없었지만
편의상 콘솔에도 띄웠습니다.(...)

코드 : (정리ver)rocket_asn2_final.txt
(정리 전 ver)rocket_asn2_non.txt
실행파일 : rocket_asn2.exe

정리 전의 코드는, 코딩할 떄의 상태가 멋지게 드러난다는 점에 의의가 있어서 올려봅니다. 삽질한 기록이기도 하고...:)

-----------------------------
로켓단 Asn#2. 계산기를 만들자

+-*/의 사칙연산이 가능한 계산기를 만듭니다.


*목표
string을 다루는데 익숙해진다.
file I/O에 익숙해진다.
포인터와, 동적할당, linked list의 사용에 익숙해진다.
recursive하게 생각하는것에 익숙해진다.


*계산 규칙(일반적인 사칙연산임.)

0. 기본적인 사칙연산 기호와 괄호()만을 사용합니다.
1. +,-보다는 *,/가 우선권이 높습니다.
2. 같은 우선권이라면 왼쪽부터 먼저 계산됩니다.
3. 괄호()가 생기면 괄호안의것이 먼저 계산됩니다.
4. 괄호 안에는 또 다른 괄호가 있을수 있습니다.


*프로그램 요구조건
1. 계산할 식들을 파일로 부터 다 받아서 일단 저장해둡니다.
2. 파일에 몇개의 식이 있을지 모르니 일단 linked list를 이용해서 식을 모두 저장합니다.
3. 식을 계산합니다.
4. 계산 결과가 작은것부터 위로 오게 소팅합니다.
5. 소팅되어 있는 결과를 "식 = 답\n" 의 형태로 파일에 출력합니다.


*제약
1. 스택을 아직 배우지 않았으니 식을 계산하는과정은 recursive하게 구현합니다.
2. 연산기호들 사이에는 임의의 갯수의 빈공간이 있을 수 있습니다.
3. 인풋 파일에서 식과 식의 구분은 엔터'\n'으로 합니다.
4. 인풋 파일에 잘못된 식은 들어오지 않는다고 가정해도 됩니다.
5. 모든 숫자는 int라고 가정합니다.
6. int끼리의 나누기에서 소수가 생길경우, 버림합니다.(C의 /와 똑같습니다.)
-----------------------------

덧. 그러고보니, 이렇게 어싸인 조건 올리는 것도 불펌이려나요.ㅎㅎ
출처는 단장님...입니다./ㅅ/;;;;; 다음부터는 허락받고 올려야지.=_=;;;;;;;;;;;;

덧2. 컴퓨터가 맛이 갈 수도 있습니다. 혹시 모르니까 적어봅니다.=_=;;;;

덧3. 어싸인 하면서 단장님과의 대화 내용


하엡 : 14 * (5 - 7) <-같은게 안돼서.../먼산
단장님 : 딴건 되는데 그게 안될수도 있나;;;

...그렇더라구요.

하엡 : 주석은 어떻게 할까요?
단장님 : 주석은 적당히 달아
하엡 : 넹...
단장님 : 안달아도 되다는게 아니라
적당히 달으라고 하는거야 <-

하엡 : ...네에/ㅂ/;; 아까 그게 안되는걸 봐서는 단장님이 생각하시는 방법이랑 전혀 다르게 간 듯.../덜덜
단장님 : 뭐... 다짜고 보자고 /썩

학교 어싸인의 주석에 =_=+ 모드로 짰다가, 첫번째 어싸인에 주석 거의 없이 내서...
그보다 맨 아랫줄...!

하엡 : - 5 는 되는데 -5 는 계산이 두번 되네요=_=;
단장님 : 아...
응;;?
뭔가 정말 신기하게 짠것같다-_-;;

저도 그렇게 생각합니다...

하엡 : 메일로 보낼까요??
단장님 : 오
단장님 : 다했어?
하엡 : 네에/##;;;
단장님 : 그래
메일로 보내줘~
하엡 : 넵
단장님 : (불쌍한 후발군/썩)

!!!!!! 이미 후발군의 편은 없다?!
그치만 뭐... 그쪽은 비베 하다가 왔다니까 반나절만에 짤지도 모를 일이죠. 후후후.=_=...(진심)

닫기


덧4. 단장님의 진단(?) 결과는, 매우 나쁜 코드라는겁니다.ㅎㅎㅎㅎㅎㅎ 컨씨컨브이하면서 오류처리 빼먹은 것도 있었고(이딴건 함수로 처리할 것!) 등등등 차마...otl

by 하에프 | 2007/04/27 22:07 | [G-pos] | 트랙백 | 덧글(0)

트랙백 주소 : http://aksktkfk.egloos.com/tb/3351989
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶