Qt 계산기 간단한듯 복잡하네요 고수형들 봐주세요 ㅠㅠ
글쓴이: bigdaddy2001 / 작성시간: 목, 2013/01/31 - 3:32오후
QStringList strListPlus = strBuf.split("+"); double numsP[256] = {0x00, }; double numsM[256] = {0x00, }; double result = 0; int countP = 0; int countM = 0; for(int n=0; n<strListPlus.count(); n++) { QString temp1 = strListPlus.at(n); QStringList strListMinus = temp1.split("-"); countP = 0; for(int nn=0; nn<strListMinus.count(); nn++) { QString temp2 = strListMinus.at(nn); numsP[countP++] = temp2.toDouble(); } if(countP == 0) { numsM[countM] = temp1.toDouble(); } else { for(int nn=0; nn<countP; nn++) { if(nn == 0) { numsM[countM] = numsP[nn]; } else { numsM[countM] -= numsP[nn]; } } } countM++; } for(int n=0; n<countM; n++) { result += numsM[n]; } strBuf.sprintf("%.2f", result); }
숫자 입력 부분은 문제가 없구요 여기서 4칙연산 다하려니까 ㅠ_ㅠ ..
+ - 는되요.... 또 따로 * / 도 아주조금만바꾸면되는데 4칙연삭 다하려니까 멘붕... ㅠㅠ
( ) 괄호가 없다치구 7*8+6/8-3 요론거 하기가 힘드네요 .. 멘붕이왓어.. ㅠㅠ
도와주세용~ ㅋ
Forums:
멘붕이 왔어? 토닥토닥 그러면서 배우는거야
멘붕이 왔어? 토닥토닥 그러면서 배우는거야 걱정하지마.
형이 왔으니 해결할수 있을거야.
형이 어떻게 하는지 힌트줄게.
계산기 구현은 스택이라는걸 이용해봐. 우리가 사용하는 계산식은 연산자가 피연산자들의 가운데 오는 중위 표기법이라는걸 써.
우리가 어렸을때부터 중위표기법을 써오고 그걸로 배워와서 익숙하지?
그런데 생각해봐. 중위표기법은 정말 계산하는데 복잡해.
연산자 우선순위는 그렇다 쳐도 가운데 괄호가 있으면 괄호부터 찾아들어가서 해야하잖아?
그런데 중위표기법이라는거 말고 전위표기법 후위표기법이라는게 있어.
그걸 이용해봐. 그러면 신세계가 열릴거야.
이때 전위 또는 후위 표기법이라는 것을 이용해서 계산을 할때 스택이라는걸 이용하면 무지 쉽게 할수 있어.
일단 전위, 중위, 후위 표기법들에 대해서 공부를 해보고 어차피 계산기 프로그램에 사람들한테 전위, 후위 표기법으로
수식을 입력하라고 하면 화낼거야. 따라서 사람들이 입력한 중위 표기법을 전위 또는 후위 표기법으로 바꾸는 방법을 공부해봐.
그리고나서 전위, 후위 표기법으로 바꾼걸 실제 계산할 때 스택이라는 것을 어떻게 이용하는지와 스택이 뭔지에 대해서 공부해봐.
그렇게 하면 풀릴거야.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
최근 몇 달간 인터넷을 통틀어
가장 멋지고 적절한 답글을 본 것 같습니다. ㅎㅎ
댓글 달기