|
원하는 문자열을 구분하는 기술을 공부하셔야할듯합니다.
일단 수학적인 기호, 공백, 가로등이 아니면 숫자이기 때문에
해당 기호가 아닐경우 버퍼에 넣고 기호가 나타나면 버퍼에 넣었던 것을
atoi 등의 함수를 이용하든 아니면 문자를 숫자로 바꾸는 함수를 따로 만드시든 하여
숫자로 변경하여 스텍에 저장하시면됩니다.
서덕만 님이 쓰신 글 :
: 아래 소스는 일의자리 숫자까지밖에 계산이 되지 않습니다.
:
: 입력받은 어떤 숫자로나 계산이 가능하게끔 수정하고 싶은데 어떻게 수정을 해야 좋을 지 팁 부탁드립니다.
:
: (Ex. 입력을 문자 따로 숫자따로 받거나 혹은 입력받은 문자열에서 숫자를 구분하는데 십의자리나 백의자리도 구분 할수 있는 방법(지금은 100을 입력하면 1,0,0 이렇게 구분하는 거 같습니다..ㅠㅠ) 부탁드립니다!
:
: InitializeStack();
: gets(buf);
:
: len = strlen(buf);
: i = 0;
: while(i < len) {
: c = buf[i++];
:
: if(c == ' ')
: continue;
: else if(c <= '9' && c >= '0')
: OperandPush(c-'0');
: else if( c == '+' || c == '-' || c == '*' || c == '/' ) {
: if(IsEmptyOperatorStack())
: OperatorPush(c);
: else {
: opr = OperatorPop();
: if(GreaterOpr(opr , c) ){
: opn2 = OperandPop();
: opn1 = OperandPop();
:
: opn1 = Calculate(opn1, opn2 , opr);
: OperandPush(opn1);
: OperatorPush(c);
: }
: else {
: OperatorPush(opr);
: OperatorPush(c);
|