Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- #include<ctype.h>
- char stack[100];
- int top = -1;
- void push(char ch) {
- stack[++top]=ch;
- }
- void pop () {
- top--;
- }
- int priority(char ch) {
- if(ch=='^') return 3;
- else if(ch=='*' || ch=='/' || ch=='%') return 2;
- else if(ch=='+' || ch=='-') return 1;
- else return -1;
- }
- int main () {
- char s[100];
- gets(s);
- int l = strlen(s);
- for(int i=0;i<(l/2);i++) {
- char temp = s[i];
- s[i] = s[l-i-1];
- s[l-i-1] = temp;
- }
- puts(s);
- for(int i=0;s[i]!='\0';i++) {
- if(s[i]=='(') {
- s[i]=')';
- }
- else if(s[i]==')') {
- s[i]='(';
- }
- }
- char p[100];
- int j=0;
- for(int i=0;s[i]!='\0';i++) {
- if(isalnum(s[i])) {
- p[j]=s[i];
- j++;
- }
- else if(s[i]=='(') {
- push(s[i]);
- }
- else if(s[i]==')') {
- while(stack[top]!='(') {
- p[j]=stack[top];
- pop();
- j++;
- }
- pop();
- }
- else {
- while(priority(s[i]) <= priority(stack[top])) {
- p[j]=stack[top];
- j++;
- pop();
- }
- push(s[i]);
- }
- }
- for(int i=top;i>=0;i--) {
- p[j]=stack[i];
- j++;
- }
- p[j]='\0';
- strrev(p);
- printf("%s",p);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment