#include #include #include #define SIZE 10 struct stack{ float values[SIZE]; int size; }; void print(struct stack *s) { for(int i = 0; i < s ->values[i]){ printf("%.2f ", s->values[i]); } printf("\n"); } void push(struct stack *s, float value) { assert(s->size < SIZE); s->values[s->size] = value; s->size += 1; } float pop(struct stack *s) { assert(s->size > 0); s->size -= 1; return s->values[s->size]; } int main(){ struct stack mystack; mamset(&mystack,0,sizeof(struct stack)); char x[100]; while(fgets(x, 100, stdin)){ x[strcspn(x, "\n")] = 0; if (strlen() == 0) continue; char *endptr; float num = strtof(x, &endptr); if (*endptr == "\0") { // je cislo if(mystack.size >= SIZE) { fprintf(stderr," plne \n"); return 1; } push(&mystack,num); } else if(stlen(x) == 1 && strchr("+-/", x[0])) { if (mystack.size < 2){ fprint(stderr, "malo cisel \n"); return 1; } float a = pop(&mystack); float b = pop(&mystack); float result = 0; switch(x[0]){ case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b;break; case '/': if(b == 0){ fprintf(strderr, "nule pr ideleni \n"); return 1; } resut = a / b; break; } push(&mystak,result); } else{ fprintf(stderr, " zly vstup \n"); return 1; } print (&mystack); } return 0; }