#include #include #include #define SIZE 10 int main(void) { double ulozisko[SIZE]; int top = 0; char vstup[64]; while (fgets(vstup, sizeof(vstup), stdin)) { vstup[strcspn(vstup, "\n")] = 0; if (strlen(vstup) == 0) { printf("no input\n"); return 0; } char *koniec; double cislo = strtod(vstup, &koniec); if (*koniec == '\0') { if (top >= SIZE) { printf("stack full\n"); return 0; } ulozisko[top++] = cislo; } else if (strlen(vstup) == 1 && strchr("+-*/", vstup[0])) { if (top < 2) { printf("not enough values\n"); return 0; } double b = ulozisko[--top]; double a = ulozisko[--top]; double vysledok = 0.0; switch (vstup[0]) { case '+': vysledok = a + b; break; case '-': vysledok = a - b; break; case '*': vysledok = a * b; break; case '/': vysledok = b == 0 ? (printf("division by zero\n"), exit(0), 0) : a / b; break; default: printf("invalid op\n"); return 0; } ulozisko[top++] = vysledok; } else { printf("invalid input\n"); return 0; } for (int i = 0; i < top; i++) printf("%.2f ", ulozisko[i]); printf("\n"); } printf("no input\n"); return 0; }