#include #include #include #include #define STACK_SIZE 100 struct stack{ float values[STACK_SIZE]; int size; }; int main(){ struct stack mystack; memset(&mystack,0,sizeof(struct stack)); char vstup[STACK_SIZE]; int counter = 0; while(1){ fgets(vstup, STACK_SIZE, stdin); vstup[strcspn(vstup, "\n")] = 0; if(strlen(vstup) == 0){ break; } if(vstup[0] == '-' || vstup[0] == '+' || vstup[0] == '*' || vstup[0] == '/'){ if(vstup[0] == '-'){ mystack.values[0] = mystack.values[0] - mystack.values[1]; for(int i = 1; mystack.values[i] != 0;i++){ mystack.values[i] = mystack.values[i+1]; mystack.values[i+1] = 0; counter--; } } if(vstup[0] == '/'){ mystack.values[0] = mystack.values[0] / mystack.values[1]; for(int i = 1; mystack.values[i] != 0;i++){ mystack.values[i] = mystack.values[i+1]; mystack.values[i+1] = 0; counter--; } } if(vstup[0] == '*'){ mystack.values[0] = mystack.values[0] * mystack.values[1]; for(int i = 1; mystack.values[i] != 0;i++){ mystack.values[i] = mystack.values[i+1]; mystack.values[i+1] = 0; counter--; } } if(vstup[0] == '+'){ mystack.values[0] = mystack.values[0] + mystack.values[1]; for(int i = 1; mystack.values[i] != 0;i++){ mystack.values[i] = mystack.values[i+1]; mystack.values[i+1] = 0; counter--; } } } else{ float cislo = strtof(vstup, NULL); mystack.values[counter] = cislo; counter++; } mystack.size = counter; for(int i =0; mystack.values[i] != 0;i++){ printf("%.2f ", mystack.values[i]); } printf("\n"); } }