Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[827] 에러가나네요..
김경래 [necle] 1731 읽음    2002-07-04 16:37
책예제대로 따라했는데.. 에러가나네요...

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>


#define MAX 80
#define SMAX 80

#define TRUE 1
#define FALSE 0

typedef struct STRING{
    char s[MAX];
    int mode;
} string;
typedef struct STACK {
    string s[SMAX];
    int sp;
} stack;
stack pstack;

void error(void) {
    puts("INPUT EROOR.");
    exit(1);

}
void initstack(void)
{
    pstack.sp = 0;
}
void push(string n)
{
    if(pstack.sp == 0)
        error();
    pstack.s[pstack.sp] = n;
    pstack.sp++;
}
string pop( void)
{
    if(pstack.sp==0)
        error();
    pstack.s[pstack.sp] = n;
    return pstack.s[pstack.sp];
}


int isoper(int n)
{
    if (n=='+' || n=='-'||n=='*'||n=='/')
        return TRUE;
    return FALSE;
}

void addparen(char *s)
{
    int i, len;
    len = strlen(s);
    if(len+3 >MAX)
    {
        puts("string length is too small... please recompile.");
        exit(3);
    }
    s[len]=')';
    for (i=len;i>=0;i--)
        s[i+1]=s[i];
    s[0]='(';
    s[len+2]=0;
}

void post2in(char *in,char *out)
{
    int i;
    int np1,np2;
    string opr1,opr2;
    char optmp[2];

    for(i=0;in[i];i++)
    {
        if(!isalpha(in [i]) && !isoper(in [i]))
            error();
        switch(in [i])
        {
        case '+':
        case '-':
            opr2 =pop();
            opr1 =pop();
            optmp[0] = in[i];
            optmp[1] =0;
            strcat(opr1.s,optmp);
            strcat(opr1.s,opr2.s);
            opr1.mode=TRUE;
            push(opr1);
            break;
        case'*':
        case'/':
            opr2=pop();
            opr1=pop();
            optmp[0] =in[i];
            optmp[1] =0;
            if(opr1.mode )
                addparen(opr1.s);
            strcat(opr1.s,optmp);
            if(opr2.mode )
                addparen(opr2.s);
            strcat(opr1.s,opr2.s);
            push(opr1);
            break;
        default:
            opr1.s[0] = in[i];
            opr1.s[1]=0;
            opr1.mode = FALSE;
            push(opr1);
        }
    }
    opr1=pop();
    strcpy(out,opr1.s);
}
void main(void)
{
    char in[MAX],out[MAX];
    int i;
    initstack();
    printf("Enter input:");
    gets(in);
    if(in[strlen(in)-1] != '#')
        error();
    in[strlen(in)-1]=0;
    post2in(in,out);
    printf("The result is : %s\n\t\t\t%s\n",in,out);
}

고수님.. 헬프미~~
즐거운하루되세요

+ -

관련 글 리스트
827 에러가나네요.. 김경래 1731 2002/07/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.