프갤 갤러분들이 과제질문에 몸서리 칠정도임을 알면서도 염치 불문하고
이렇게 질문 드립니다.
계산기를 작성중인데, 입력은 양의실수이되, 그 자리수에 한계가 없는
계산기를 짜야 합니다. 그리고 expression이 단순히 두개의 operand
만이 아니기 때문에 operator precedence 또한 고려해야 합니다.
연산자 우선순위 같은경우에 스택을 이용해서 후위표기식으로 바꾸고,
evaluation하는 것은 잘 알고 있습니다. 길이에 제한이 없는 operand에 대해
더하기 빼기 계산기 같은 경우에는 이전에 캐릭터형 배열을 이용해서
작성한 적이 있기에 잘 알고 있는데, 문제는 곱셈과 나눗셈입니다.
보통 과제같으면 이렇게 저렇게 하면 되겠다 감이 잡히는데, 이번 과제는 솔직히
컴퓨터로 구현이 가능한건가 싶을 정도로 저한텐 벅차서요.. 물론 구현 가능하니까
과제를 내주셨겠지만. 곱셈의 경우는 억지로 생각해낸게 씨피유가 곱셈할때 덧셈을
여러번 수행하는걸 응용하면 어떻게 될것도 같지만 또 덧셈루프를 돌리는 것 또한
MAX_INT 횟수 안에서만 가능하니.. 이방법이 아닌거 같고...
조금이라도 도움이 될 힌트좀 가르쳐 주세요. 그것마저도 귀찮으시다 하면 적어도
컴퓨터로 구현이 가능한 문제니 한번 풀어보라라는 말이라도..
15 * 3은 15를 3번 더하면 되지 않을까 ? 나누기는 빼기를 잘 이용해보고
곱셈 연산자를 쓰면 안되는 겁니까 아니면 문자라서 못하는 겁니까
5555555555555555.222222222222222222*8888888888888888.1111111111 이런게 계산되어 나와야 해요.. 소숫점 밑이 순환되서 나올땐 스무번째 자리에서 반올림...
질문자가 원하는게 이거아냐 ? 3.2070276270100760710710760 + 1.2526262621118886662288188186818681868286168199099 * 3.141588285299699292969 - 4.55559199196891869186919689186916989101001011001606868828386887 이렇게 치면 답나오는거
소주님이 말씀하시는 거 맞아요. 덧셈 뺄셈은 하겠는데 곱셈 나눗셈이 진짜 가능한건지;;;
굳이 캐릭터형 배열이라 해서 곱셈을 못하는 건 아닐 것 같은데...... 뭣보다 반복계산하면 좀 느릴것 같기도 하고......
내가 말해줫잖아. 15 * 3은 15 + 15 + 15 잖아.
응.. 위에서 말한대로 안하고 직접 사람이 풀듯이도 할 수 잇어
15를 루프 세번 돌리면 되는데.. 만일 인테이져의 최대크기보다 더 큰 루프를 돌리는 곱셈이면 어떻게 하나요?
예를 들어 15.5 * 2.73 같은건 15.5를 2.73번 더해주기는 좀 그렇지 않으려나 싶어서...
컴퓨터로 구현이 가능한 문제이니 한번 풀어보세요. 힘내시구요 ^_^*
말 그대로 사람 풀듯이 푸는 계산방식을 코딩하면 될 것 같은데
ㅇㅇ // 155 * 273으로 하면 되지 않을까
그럼 소주님이 말씀하신 식 중에서 1.2526262621118886662288188186818681868286168199099 * 3.141588285299699292969 는 12526262621118886662288188186818681868286168199099 * 3141588285299699292969 를 계산한 뒤에 소숫점 위치만 옮겨주면 되는것이란 말씀..이죠?
소주// 소주횽 여기서 질문! 속도 때문에 그러는데 155 * 273 이게 빠를려나 아니면 사람 풀듯이 하는게 더 빠르려나? 나는 왠지 후자같지만
피연산자에서 1식빼가면서 0이될때까지 더하면 되잖아 ...
아.. 달콤한c님 말씀이 맞네요. 한번 해볼게요 ^^
손으로 풀듯이하는게 당연히 빠르지열 ;;;;;;
소주// 넵 횽 ㅋ
도움말씀 감사드립니다. 답글 찬찬히 읽어보니 제가 멍충한 질문한 느낌이 드네요 ^^;; 충분히 해결 가능한 문제구나