ÇÁ·Î±×·¡¹Ö

 3204, 158/161 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   leebk1124
   c¾ð¾î segmentation fault:11 ¿À·ù Áú¹®µå¸³´Ï´Ù!

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=6628 [º¹»ç]


#include <stdio.h>
#include <ctype.h>
#define STACK_SIZE 100

char token_stack[STACK_SIZE];
int token_top = -1;
void infix_to_postfix();
int precedence(char op);
void push_token(char sym);
char pop_token();
void print_stack();
int is_empty();
double cal_postfix(char expr[]);

int main()
{
    infix_to_postfix();
}

void infix_to_postfix()
{
    char expr[100], sym, token, postfix[100];
    int cnt = 0;
    int pos = 0;
    int i = 0;

    printf("Enter the expression :: ");
    scanf("%s", expr);

    for(int i = 0; expr[i] != '\0'; i++) {
        printf("%c", expr[i]);
    }

    while ((token = expr[pos++]) != '\0')
    {
        if(token >= '0' && token <= '9') {
            do{
                postfix[cnt++] = token;
            }while((token >= '0' && token <= '9'));
            
            postfix[cnt++] = ' ';
            //print_stack();
        }
        
        else if(token == '(') {
            push_token(token);
            //print_stack();
        }

        else if(token == ')') {
            while((sym = pop_token()) != '(') {
                postfix[cnt++] = sym;
                postfix[cnt++] = ' ';
            }
           // print_stack();
        }

        else
        {
            while (precedence(token_stack[token_top]) >= precedence(token) && token_top != -1) {
                postfix[cnt++] = pop_token();
                postfix[cnt++] = ' ';
            }
            push_token(token);
            
            //print_stack();
        }
        

        //else
        //    pos++;
    }

    while (token_top >= 0)
    {
        postfix[cnt++] = pop_token();
        postfix[cnt++] = ' ';
       // print_stack();
    }
    //print_stack();

    
    postfix[cnt] = '\0';

    //while(postfix[i++] != '\0') {
    //    printf("%c\n", postfix[i]);
    //}

    //cal_postfix(postfix);

}

int precedence(char op)
{
    if (op == '(')
        return 0;
    if (op == '+' || op == '-')
        return 1;
    if (op == '*' || op == '/' || op == '%')
        return 2;
    else
        return ' ';
}

void push_token(char sym)
{
    if (token_top < STACK_SIZE -1) {
        token_stack[token_top] = sym;
        token_top++;
    }
    else
        printf("token stack full\n");
}

char pop_token()
{
    if (token_top >= 0)
        return token_stack[token_top--];

    printf("token stack empty\n");
    return ' ';
}

void print_stack()
{
    if(!is_empty()) {
        for(int i = 0; i <= token_top; i++) {
            printf("%c", token_stack[i]);
        }
        printf("\n");
    }
}

int is_empty() {
    if(token_top == -1) {
        printf("Stack is empty.\n");
        return 1;
    }
    return 0;
}

double cal_postfix(char expr[])
{
    char pos;
    double val0, val1, val2;
    int i = 0;

    while(expr[i] != '\0')
    {
        pos = expr[i++];

        if(pos >= '0' && pos <= '9')
        {
            val0 = pos - '0';
            push_token(val0);
        }

        else if(pos == '+' || pos == '-' || pos == '*' || pos == '/')
        {
            val2 = pop_token();
            val1 = pop_token();

            switch(pos)
            {
                case '+' : push_token(val1 + val2); break;
                case '-' : push_token(val1 - val2); break;
                case '*' : push_token(val1 * val2); break;
                case '/' : push_token(val1 / val2); break;
            }
        }
    }
    return pop_token();
}


infix¸¦ postfix·Î ¹Ù²Ù°í °è»êÀ» ÇÏ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
±×·±µ¥ °£´ÜÇÏ°Ô 24+3¸¸ ÀÔ·ÂÇصµ segmentatino fault¿À·ù°¡ ¹ß»ýÇÕ´Ï´Ù.
¹è¿­À» ÀԷ¹ÞÀº ÈÄ printf¹®µµ ½ÇÇàÀÌ µÇÁö ¾Ê½À´Ï´Ù.
¾îµð¼­ ¹®Á¦°¡ ¹ß»ýÇÑ°ÇÁö µµÀúÈ÷ ¸øã°Ú¾î¼­ Áú¹®µå¸³´Ï´Ù. °¨»çÇÕ´Ï´Ù!

  Hit : 2067     Date : 2021/05/21 01:03



    
cd80 ÀÔ·ÂÈÄ ¹Ù·Î³ª¿À´Â printf´Â \nÀÌ ¾ø¾î¼­ flush°¡ µÇÁö ¾Ê¾Æ¼­ Ãâ·ÂÀÌ ¾ÈµÇ´Â°Å±¸¿ä
Å©·¡½¬ ³ª´Â°Å´Â
if(token >= '0' && token <= '9') {
do{
postfix[cnt++] = token;
}while((token >= '0' && token <= '9'));
¿©±â¼­ ¹«ÇÑ·çÇÁ¸¦ µ¹¾Æ¼­ Å©·¡½¬°¡ ¹ß»ýÇÕ´Ï´Ù
2021/05/21  
leebk1124 ¿Í Çæ ±×·¯³×¿ä!! Á¤¸» °¨»çÇÕ´Ï´Ù!! 2021/05/22  
64   cÇÁ·Î±×·¡¹Ö Áú¹®ÀÔ´Ï´Ù..[8]     dydwo92
12/16 2043
63   c ¾ð¾î Çñ׷¡¹Ö Áú¹®¿ä!!! °í¼ö´Ôµé Á» ºÁÁÖ¼¼¿ä.¤Ð     kanggu77
02/08 2041
62   °ÔÀÓ³» ÆÄÀϺ¯°æÀ» ¸øÇÏ°Ô Çϴ°Š±×³É ¹«½ÃÇÏ°í ÇÒ¼öÀִ¹æ¹ýÀÌ ÀÖÀ»±î¿ä?     kwc7655
10/17 2040
61   c++ °ü·Ã ±¦ÂúÀº ½ÎÀÌÆ®°¡ ¾îµð ÀÖ³ª¿ä?[1]     liveai
01/25 2039
60   ÇÁ·Î±×·¡¹Ö Áú¹®ÀÌ¿ä...     rewindmin
01/19 2037
59       [re] [re] ¶Ç Áú¹®Çϳ׿ä.. ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ¿¡ °üÇÑ Áú¹®ÀÔ´Ï´Ù..[3]     °ËÀº¿ù¾Æ
12/11 2035
58   telnet Á¢¼ÓÇؼ­ Æ® ·¹ÀÌ³Ê ÇÏ·Á°í Çϴµ¥¿ä Çѱ¹¾î°¡ ±úÁ®¼­ ³ª¿È´Ï´Ù[3]     rewrite611
01/21 2034
57   iyf0420[3]     iyf0420
11/19 2029
56     [re] c¾ð¾î¿¡¼­¿ä...     namco1
10/26 2021
55   [ÃʱÞ] ´©Àû°è»ê½Ã °á°ú°ªÀÌ»ó[2]     íÆå¨éë
03/16 2006
54   vi Áú¹®Á»ÇÒ°Ô¿ä.[7]     power602
11/11 1999
53   C¾ð¾î °ü·Ã¹®ÀÇ[4]     radical31
03/13 1996
52   ´Ù½Ã Àü¹®ÀûÀ¸·Î °øºÎ½ÃÀÛÇغ¸°í½Í½À´Ï´Ù.     philomylove
11/03 1992
51   ÇѽÉÇÏ°ÚÁö¸¸¼­µµ ¼º½ÇÇÑ ´äº¯ ºÎŹµå¸³´Ï´Ù[2]     dragon2044
10/22 1990
50     [re] ÀÌ°Å º¸½Ã°í °íÃÄÁÖ¼¼¿ä[1]     rain48
10/15 1987
49     [re] ÀÚ¹Ù·Î °ÔÀÓÀ» Á¦ÀÛÇÏ°í ½ÍÀºµ¥...     zetrhee
04/15 1986
48     [re] ÇÁ·Î±×·¡¹ÖÀ» ¹è¿öº¸·ÁÇÕ´Ï´Ù.[1]     rootguy
10/14 1976
47   Çб³ °úÁ¦Áß ¸·Çô¼­¿ä...Áú¹®µå¸³´Ï´Ù...[7]     kamijyo
10/17 1964
46   ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ·Á°íÇϴµ¥..[1]     okko80
08/29 1959
45   óÀ½ÀÇ ½ÃÀÛ¿¡ ´ëÇؼ­ Áú¹® µå·Á¿ä..¤Ì.¤Ð..¤¾[1]     manilaina
02/01 1951
[1]..[151][152][153][154][155][156][157] 158 [159][160]..[161]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org