2007년 04월 27일
로켓단_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. 어싸인 하면서 단장님과의 대화 내용
덧4. 단장님의 진단(?) 결과는, 매우 나쁜 코드라는겁니다.ㅎㅎㅎㅎㅎㅎ 컨씨컨브이하면서 오류처리 빼먹은 것도 있었고(이딴건 함수로 처리할 것!) 등등등 차마...otl
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. 어싸인 하면서 단장님과의 대화 내용
덧4. 단장님의 진단(?) 결과는, 매우 나쁜 코드라는겁니다.ㅎㅎㅎㅎㅎㅎ 컨씨컨브이하면서 오류처리 빼먹은 것도 있었고(이딴건 함수로 처리할 것!) 등등등 차마...otl
# by | 2007/04/27 22:07 | [G-pos] | 트랙백 | 덧글(0)

...그렇더라구요.

!!!!!! 이미 후발군의 편은 없다?!






☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]