Home
Problem
Status
Contest
Workbook
User
Group
Forum
Register
Login
{"managingGroups":{},"author":"xhen24","updateTime":1552143588000,"title":"Problem: UVA 727","dislikeCnt":2,"content":"What could be wrong in this code? I have been a lot of time trying to find out what could be the problem, but I still can\u0027t see it.\n\nThe link to the problem is this: https://uva.onlinejudge.org/index.php?option\u003dcom_onlinejudge\u0026Itemid\u003d8\u0026category\u003d9\u0026page\u003dshow_problem\u0026problem\u003d668\n\n```\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n\n#define MAX_STRING 64\n#define MAX_STACK 64\n#define MAX_LINES 50\n\ntypedef struct {\n char datos[MAX_STACK];\n int top;\n} Stack;\n\nStack *stack_ini ();\nvoid stack_push(Stack *stack, char c);\nchar stack_pop(Stack *stack);\nint stack_isEmpty (Stack *stack);\nint Prec (char c);\nchar top (Stack *stack);\nint isOperand (char c);\n\nint main(int argc, char** argv) {\n int num, i, j;\n char c;\n Stack *stack;\n \n stack \u003d stack_ini();\n \n scanf (\"%d\", \u0026num);\n getchar ();\n \n for (i\u003d0; i\u003cnum; i++) { \n c \u003d 0;\n for (j\u003d0; c!\u003d\u0027\\n\u0027; j++) {\n getchar ();\n scanf (\"%c\", \u0026c);\n \n if (c\u003d\u003d \u0027\\n\u0027) {\n while (!stack_isEmpty (stack)) {\n fprintf (stdout, \"%c\", stack_pop (stack));\n }\n \n fprintf (stdout, \"\\n\");\n }\n else if (isOperand (c))\n fprintf (stdout, \"%c\", c);\n \n else if (c \u003d\u003d \u0027(\u0027)\n stack_push (stack, c);\n \n else if (c \u003d\u003d \u0027)\u0027) {\n while (top (stack) !\u003d \u0027(\u0027) \n fprintf (stdout, \"%c\", stack_pop (stack));\n \n stack_pop (stack);\n }\n \n else {\n while (!stack_isEmpty (stack) \u0026\u0026 (Prec (c) \u003c\u003d Prec (top (stack))) )\n fprintf (stdout, \"%c\", stack_pop (stack));\n \n stack_push (stack, c);\n } \n }\n }\n \n free (stack);\n return (EXIT_SUCCESS);\n}\n\n\nStack *stack_ini() {\n Stack *stack;\n \n stack \u003d (Stack*) malloc (sizeof (Stack));\n \n stack-\u003etop\u003d-1;\n \n return stack;\n}\n\nvoid stack_push(Stack *stack, char c) {\n stack-\u003etop++;\n \n stack-\u003edatos[stack-\u003etop] \u003d c;\n}\n\nchar stack_pop(Stack *stack) {\n char element;\n element \u003d stack-\u003edatos[stack-\u003etop];\n \n stack-\u003edatos[stack-\u003etop] \u003d 0;\n stack-\u003etop--;\n \n return element;\n}\n\nint stack_isEmpty (Stack *stack) {\n if (stack-\u003etop\u003d\u003d-1)\n return 1;\n \n return 0;\n}\n\nint Prec (char c) {\n switch (c) {\n case \u0027+\u0027:\n case \u0027-\u0027:\n return 1;\n \n case \u0027*\u0027:\n case\u0027/\u0027:\n return 2;\n }\n \n return -1;\n }\n\nchar top (Stack *stack) {\n return stack-\u003edatos[stack-\u003etop];\n}\n\nint isOperand (char c) {\n if (c\u003e\u003d\u00270\u0027 \u0026\u0026 c\u003c\u003d\u00279\u0027)\n return 1;\n \n else return 0;\n}\n```","threadId":44449,"likeCnt":0,"createTime":1552139049000,"isWorkbook":false,"viewCnt":1470,"openness":2,"fav":false,"id":923,"trustable":false}