헬마입니다.

얼마전부터 프로젝트에 사용할 사칙연산 계산기를 이리저리 찾아보다가 인터넷에서 적당한 넘을 하나 구했는데 기능이 많이 부족하더군요.

계산기 원소느는 구한지 몇개월이 지난거라 어디서 받았는지도 기억이 안나네요.. 원저자분이 누구셨는지 참으로 죄송합니다.

그래서 이리저리 뜯어보고 기능을 싸그리 고쳤습니다.

원 버전은 사칙연산, 연산자 우선순위, 괄호 지원까지 였는데 변수 라는 개념이나 기타 등등 도입해봤습니다.

그런데 만들어놓고 보니 코드가 좀 난잡해진거 같아서 코드 최적화랄까 기능 건의 라던가 필요할거 같아서 테스트 용으로 올려봅니다. ^^

간단한 사용법

1. 한번에 여러문장을 계산할 수 있으며 각 문장의 끝은 ; 로 구분하며, 이전문장에 변수에 값을 대입하면 다음 문장에서 그 변수의 값을 꺼내사용할 수 있습니다.
2. 변수의 값들은 Clear~ 함수를 사용하기전까지 유지됩니다.
3. 변수에 숫자의 벡터를 넣어 계산할 수 있습니다.

좀 더 빠르게, 최적화 방안이라던가, 기능 건의 있으면 댓글 달아주세요 ^^ 아직 만들다 만거라서 부족한 점이 많습니다.

#include "Calc.h"

int main( int argc, wchar_t* argv[] )
{
    CCalculator ccalc;
    // 값을 계산하여 a 라는 변수에 저장하고, 결과를 반환합니다. 
    vecVariables result = ccalc.GetResult( ccalc.GetPostfixExp( "a = 3*4 + (2+3);" ) );

    // c 라는 변수를 계산기 내에 설정합니다. 
    vecVariables vecTemp;
    vecTemp.push_back( 2.3 );
    vecTemp.push_back( 3.3 );
    ccalc.SetVariable( "c", vecTemp );

    // 변수 a 와 c 를 더한 결과를 반환합니다. 
    result = ccalc.GetResult( ccalc.GetPostfixExp( "a + c;" ) );

    return 0;
}

댓글을 달아 주세요

  1. BlogIcon 브레아 2009.07.17 21:33 신고 Address Modify/Delete Reply

    헬마님~ 헬마님의 Winrar ++ 리팩버전 잘 이용하고있었는데, 요세 usb로 윈도우 다시깔기를 연습하면서
    날려먹었는데, 헬마님 홈페이지에없어졋네요. 혹시 예전꺼 백업한거있으시면 보내주시면 고맙겠습니다.
    메일 주소는 eroneko@naver.com 입니다.