자료구조레포트 (계산기)
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

본문내용

k[top]+float(int(expr[i])-48)/pow(10,j);
else stack[top]=stack[top]-float(int(expr[i])-48)/pow(10,j);
j++;
}
while(expr[i+1]!=',');
if(expr[k-1]=='0' && expr[k-2]=='-') {stack[top]=-1*stack[top];}
top++;
}
else
{
if(isdigit(expr[i]))
{
stack[top]=0;
int sign=i-1;
for(int j=i;expr[j+1]!=','&& expr[j+1]!='.';j++);
for(;i<=j;i++)
{
stack[top]=stack[top]+(int(expr[i])-48)*pow(10,j-i);
}
if(expr[sign]=='-')
{
stack[top]=-1*stack[top];
}
i--;
top++;
}
else
{
if(expr[i]=='?')
{
stack[top]=mem; top++;
}
else //연산
{
switch(expr[i])
{
case '+': stack[top-2]=stack[top-2] + stack[top-1]; break;
case '-': if(expr[i+1]>='0' && expr[i+1]<='9')
{
top++;break;
}
stack[top-2]=stack[top-2] - stack[top-1]; break;
case '*': stack[top-2]=stack[top-2] * stack[top-1]; break;
case '/': if(stack[top-1]==0)
{
cout<<"\a Error:cannot divide by zero"< }
stack[top-2]=stack[top-2] / stack[top-1]; break;
case '^': stack[top-2]=pow(stack[top-2],stack[top-1]); break; // ^ denotes exponential
case '%': stack[top-2]=int(stack[top-2])%int(stack[top-1]); break;
case '&': stack[top-2]=int(stack[top-2])&int(stack[top-1]); break;
case '|': stack[top-2]=int(stack[top-2])|int(stack[top-1]); break;
case 's': if(mode==1) stack[top-1]=stack[top-1]*PI/180;
stack[top-1]=sin(stack[top-1]);
top++; break;
case 'c': if(mode==1)
{
if(stack[top-1]==90)
{
stack[top-1]=0;top++;break;
}
stack[top-1]=stack[top-1]*PI/180;
}
stack[top-1]=cos(stack[top-1]);
top++; break;
case 't': if(mode==1) stack[top-1]=stack[top-1]*PI/180;
stack[top-1]=tan(stack[top-1]);
top++; break;
case 'l': if(stack[top-1]<=0)
{
cout<<"\a Error:cannot obtain log of value<=0"< }
stack[top-1]=log10(stack[top-1]);
top++; break;
case 'n': if(stack[top-1]<=0)
{
cout<<"\a Error:cannot obtain ln of value<=0"< }
stack[top-1]=log(stack[top-1]);
top++; break;
case 'i' : if(stack[top-1]>1)
{
cout<<"\a Error:cannot obtain sin inverse of value>1"< return;
}
stack[top-1]=asin(stack[top-1]);
if(mode==1) stack[top-1]=stack[top-1]*180/PI;
top++;break;
case 'o' : if(stack[top-1]>1)
{
cout<<"\a Error:cannot obtain cos inverse of value>1"< return;
}
stack[top-1]=acos(stack[top-1]);
if(mode==1) stack[top-1]=stack[top-1]*180/PI;
top++;break;
case 'a' : stack[top-1]=atan(stack[top-1]);
if(mode==1) stack[top-1]=stack[top-1]*180/PI;
top++;break;
case 'h' : stack[top-1]=sinh(stack[top-1]);
top++; break;
case 'j' : stack[top-1]=cosh(stack[top-1]);
top++; break;
case 'k' : stack[top-1]=tanh(stack[top-1]);
top++; break;
case 'e' : stack[top-1]=exp(stack[top-1]);
top++; break;
}
top--;
}
}
}
}
if(error!=1) //error 가 0이면 결과값 출력
{
cout<<"\n The result is: "< mem=stack[top-1];
}
}
void main()
{
cout<<" \n\n 공학용계산기\n"< cout<<" 종료는 'quit' or 'exit' 를 치면 됨."< while(1)
{
error=0;
INFIX_TO_POSTFIX in_to_post; //객체 생성
in_to_post.get_str(); //식 입력
in_to_post.conversion(); //식 후위 식으로 변환
POSTFIX post=in_to_post; //객체를 넘겨준다.
post.calculate(); //넘겨 받은 후위 식으로 계산한다.
}
}
결과
느낀점
  • 가격2,000
  • 페이지수13페이지
  • 등록일2004.11.22
  • 저작시기2004.11
  • 파일형식한글(hwp)
  • 자료번호#274583
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니