#include #include #define PRED_ZAČETKOM 0 #define PRVI_ZNAK 2 #define PRVA_ŠTEVILKA 3 #define ŠTEVILKE 4 #define PO_NIČLI 5 int main (void) { int stanje = PRVI_ZNAK; int znak = 0; while (true) { znak = getchar(); switch (stanje) { case PRED_ZAČETKOM: if (znak == ' ') { stanje = PRVI_ZNAK; continue; } if (znak == -1 || znak == '\n') { putchar('\n'); return 0; } continue; case PO_NIČLI: if (znak == '\n') { putchar('1'); putchar('\n'); return 1; } if (znak == ' ') { putchar('1'); stanje = PRVI_ZNAK; continue; } if (znak != ' ') { putchar('0'); stanje = PRED_ZAČETKOM; continue; } stanje = PRVI_ZNAK; continue; case PRVI_ZNAK: if (znak == '+' || znak == '-') { stanje = PRVA_ŠTEVILKA; continue; } // falls through case PRVA_ŠTEVILKA: if (znak == '0') { stanje = PO_NIČLI; continue; } if (znak == '\n') { putchar('0'); putchar('\n'); return 0; } if (znak == ' ') { putchar('0'); stanje = PRVI_ZNAK; continue; } if (znak > '9' || znak < '1') { putchar('0'); stanje = PRED_ZAČETKOM; continue; } stanje = ŠTEVILKE; continue; case ŠTEVILKE: if (znak == '\n') { putchar('1'); putchar('\n'); return 0; } if (znak == ' ') { putchar('1'); stanje = PRVI_ZNAK; continue; } if (znak > '9' || znak < '0') { putchar('0'); stanje = PRED_ZAČETKOM; continue; } continue; } } return 1; }