diff options
author | Anton Luka Šijanec <anton@sijanec.eu> | 2024-03-16 01:13:06 +0100 |
---|---|---|
committer | Anton Luka Šijanec <anton@sijanec.eu> | 2024-03-16 01:13:06 +0100 |
commit | 1f85caaf6387511b05da37dd86ff736579ae357f (patch) | |
tree | 08c836ef48aa26e3c400881ffc591c4264233068 /šola/p2/dn/DN02a_63230317.c | |
parent | cv (diff) | |
download | r-1f85caaf6387511b05da37dd86ff736579ae357f.tar r-1f85caaf6387511b05da37dd86ff736579ae357f.tar.gz r-1f85caaf6387511b05da37dd86ff736579ae357f.tar.bz2 r-1f85caaf6387511b05da37dd86ff736579ae357f.tar.lz r-1f85caaf6387511b05da37dd86ff736579ae357f.tar.xz r-1f85caaf6387511b05da37dd86ff736579ae357f.tar.zst r-1f85caaf6387511b05da37dd86ff736579ae357f.zip |
Diffstat (limited to 'šola/p2/dn/DN02a_63230317.c')
-rw-r--r-- | šola/p2/dn/DN02a_63230317.c | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/šola/p2/dn/DN02a_63230317.c b/šola/p2/dn/DN02a_63230317.c new file mode 100644 index 0000000..c9bbad2 --- /dev/null +++ b/šola/p2/dn/DN02a_63230317.c @@ -0,0 +1,85 @@ +#include <stdio.h> +#include <stdbool.h> +#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('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; +} |