Contents

조회 수 10409 댓글 0
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
수식으로 된 문자열 중 한글자씩만 처리하는 간단한 소스코드
아래 주요 함수 설명

/*입력받은 중위표기의 토큰값을 가져오기위한 함수*/
precedence get_token(char *symbol, int *n){
    *symbol = expr[(*n)--];
    switch (*symbol){
        case '(' : return lparen;
        case ')' : return rparen;
        case '+' : return plus;
        case '-' : return minus;
        case '/' : return divide;
        case '*' : return times;
        case '%' : return mod;
        case '\0' : return eos;
        default : return operand;
    }
}

/*전위 표기로 변환된 배열에서 토큰 값을 가져오기 위한 함수*/
precedence get_Associationtoken(char *symbol, int *n){
    *symbol = exprTwice[(*n)++];
    switch (*symbol){
        case '(' : return lparen;
        case ')' : return rparen;
        case '+' : return plus;
        case '-' : return minus;
        case '/' : return divide;
        case '*' : return times;
        case '%' : return mod;
        case '\0' : return eos;
        default : return operand;
    }
}

/*전위로 변환 하는 함수*/
void prefix(void){
    char symbol;
    precedence token;
    int result;
    int n = strlen(expr)-1;
    /*토큰을 뒤에서 부터 가지고 온다*/
    int top = 0;
    int top2 = 0;
    stack[0] = eos;
    /*stack의 처음에 eos를 삽입*/
    /*for문을 이용 중위연산자 expr에서 토큰값이 eos일때까지 반복*/
    for(token = get_token(&symbol, &n);
    token != eos;
    token = get_token(&symbol,&n)){
        if(token == operand){
            exprTwice[top2++]=symbol;
        }else{
            if(token==lparen){
                while(stack[top]!=rparen){
                    exprTwice[top2++]=print_token(Delete(&top));
                }
                Delete(&top);
            }else{
                while(isp[stack[top]] > icp[token]){
                    exprTwice[top2++]=print_token(Delete(&top));
                }
                Add(&top,token);
            }
        }
    }
    while((token=Delete(&top)) != eos){
        exprTwice[top2++]=print_token(token);
    }
    result=eval();
    /*전위표기 연산호출*/
    /*전위로 변환된 배열을 출력*/
    while(top2!=-1){
        printf("%c",exprTwice[--top2]);
        printf(" ");
    }
    printf("\n 연산결과값은 : %d \n",result);
}




?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
673 Develop [erp] SAP 모듈 요약 hooni 2013.04.23 16602
672 Develop [js] 양원님이 공유해 주신 유료(5$란다ㅋ) 자료 ㅋㅋ secret hooni 2013.04.23 7948
671 Develop [js] 동적(innerHTML)으로 자바스크립트 실행하기.. 2 file hooni 2013.04.23 19412
670 Develop [ios] Objective-C에서 SQLite 사용하기.. file hooni 2013.04.23 15618
669 Develop [js] 자바스크립트(Javascript) 코드를 동적으로 삽입하는 방법.. file hooni 2013.04.23 24077
668 Develop 밸런싱 로봇.. 최종.. (관련 논문도 첨부) ㅋㅋ file hooni 2013.04.23 24158
667 Develop 레고 마인드스톰 NXT 수도쿠, 큐브 소스코드.. 20 file hooni 2013.04.23 83100
666 Etc 아두이노 관련 정보.. hooni 2013.04.23 23005
665 Develop 레고 NXT 마인드스톰 밸런싱 로봇 ㅎㅎ file hooni 2013.04.23 58764
664 Develop 모터에 대한 pid 제어.. ㅎㅎ file hooni 2013.04.23 19730
663 Develop [doc] UI개발시 유용한 소프트웨어 (개발 및 디버깅 툴) hooni 2013.04.23 14202
662 Etc [flash] 자동차 엔진의 원리 (4행정 사이클 그림) file hooni 2013.04.23 22163
Board Pagination Prev 1 ... 38 39 40 41 42 43 44 45 46 47 ... 99 Next
/ 99