|
읽어보시면 앍겠지만..postfix..prefix를 물어보는것이 아니라요
int는 2바이트,또는 4바이트인데..이것을 넘어가는 수를 어떻게 관리하고 계산하느냐
하는 질문이거든요...실제 계산기에서는 구현이 된 알고리즘이 있다고 하는데..
영 감을 못 잡겠네요..
비트수를 초과하는 수를 어떤 식으로 저장하고 다시 꺼내서 계산하고 저장하고...
비트수초과A + 비트수초과B ===> 비트수초과C 를 어떤식으로 표현해야 하는가
배열을 쓴다면...20자리수(<----)를 요구하니 대충 700bit를 필요로 하느데..
에구!! 고수님의 도움이 필요합니다.
어떤 힌트라도 주세요^^* 그럼 이만 줄입니다.~~
배 경
X 은행의 거액관리부는 큰 돈을 거래하는 고객을 관리한다. 여기서 취급하는 수는 일반적인 탁상계산기의 자릿수를 초과하는 경우가 많다. X 은행에서는 이번에 기존의 것보다 훨씬 많은 자릿수를 다룰 수 있는 탁상계산기를 외주 용역으로 개발하여 거액관리부 행원들에게 제공하고자 한다. 당신이 맡은 작업은 이를 위한 기본 연산프로그램의 작성이다.
과 제
긴 정수에 관한 4칙연산(+,-,*,/>을 수행하여 계산 결과를 출력하는 C 프로그램을 작성.
사 양
[입력]
하나의 수식으로서 0개 이상의 연산자(+,-,*,/)와 그보다 하나 많은 갯수의 피연산자 (모두 정수)들이 번갈아 여백없이 결합된 형태임.
수식의 끝은 newline임.
하나의 피연산자(정수)는 최대 20자릿수임.<--------------
어떤 불법 입력도 없음.
[계산]
연산자없는 수식의 결과값은 입력수 그 자체임.
연산자 우선순위는 (일반계산기에서 처럼) 입력순서에 의존함. 즉, 먼저 입력된 것이 나중 것보다 우선함 (예: 1+3*2가 입력수식이라면 답은 8).
나눗셈은 항상 소수점이하는 버리고 정수 몫만을 취함 (예: 3/2*2가 입력수식이라면 답은 2임).
[출력]
계산의 중간 결과나 최종 결과가 100자릿수를 넘는 큰 정수일 경우, 즉시 "Size Overflow" error message를 출력한 후 종료함.
0으로의 나눗셈이 시도될 경우, 즉시 "Division by Zero" error message를 출력한 후 종료함.
그 외의 경우는 정상 계산 결과를 출력한 후 종료함.
실행예
***** Run #1 *****
Enter expression: 111112222233333
Result: 111112222233333
***** Run #2 *****
Enter expression: 1+9999999999999999999-1
Result: 9999999999999999999
***** Run #3 *****
Enter expression: 99999999999999999-88888888888888888*100000000+99999999/100000000
Result: 11111111111111111
***** Run #4 *****
Exter expression: 1-10000000000000/3
Result: -3333333333333
***** Run #5 *****
Exter expression: 123456789*66778899-998877665544332211/99887766554433
Result: ?
|