From 1f85caaf6387511b05da37dd86ff736579ae357f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Sat, 16 Mar 2024 01:13:06 +0100 Subject: p2.DN02 --- "\305\241ola/p2/dn/DN02b_63230317.c" | 105 +++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 "\305\241ola/p2/dn/DN02b_63230317.c" (limited to 'šola/p2/dn/DN02b_63230317.c') diff --git "a/\305\241ola/p2/dn/DN02b_63230317.c" "b/\305\241ola/p2/dn/DN02b_63230317.c" new file mode 100644 index 0000000..ebaa364 --- /dev/null +++ "b/\305\241ola/p2/dn/DN02b_63230317.c" @@ -0,0 +1,105 @@ +#include +#include +#define ČAKAM 1 +#define PRVI 0 +#define NIČLA 2 +#define ŠTEVILKE 3 +#define OCTAL 4 +#define HEX1 5 +#define BIN1 6 +#define HEX 7 +#define BIN 8 +int main (void) { + int stanje = PRVI; + int znak = 0; + while (true) { + znak = getchar(); + if (stanje == HEX || stanje == BIN || stanje == ŠTEVILKE || stanje == NIČLA) { // term za * stanja + if (znak == EOF || znak == '\n') + goto pravilno_in_konec; + if (znak == ' ') + goto pravilno; + } + switch (stanje) { + case ČAKAM: + if (znak == EOF || znak == '\n') + goto konec; + if (znak == ' ') { + stanje = PRVI; + continue; + } + continue; + case PRVI: + if (znak == '0') { + stanje = NIČLA; + continue; + } + if (znak <= '9' && znak >= '1') { + stanje = ŠTEVILKE; + continue; + } + goto napaka; + case NIČLA: + if (znak <= '7' && znak >= '0') { + stanje = OCTAL; + continue; + } + if (znak == 'x') { + stanje = HEX1; + continue; + } + if (znak == 'b') { + stanje = BIN1; + continue; + } + goto napaka; + case OCTAL: + if (znak <= '7' && znak >= '0') + continue; + goto napaka; + case HEX1: + if ((znak <= '9' && znak >= '0') || (znak <= 'F' && znak >= 'A')) { + stanje = HEX; + continue; + } + goto napaka; + case HEX: + if ((znak <= '9' && znak >= '0') || (znak <= 'F' && znak >= 'A')) + continue; + goto napaka; + case BIN1: + if (znak == '0' || znak == '1') { + stanje = BIN; + continue; + } + goto napaka; + case BIN: + if (znak == '0' || znak == '1') + continue; + goto napaka; + case ŠTEVILKE: + if (znak <= '9' && znak >= '0') + continue; + goto napaka; + } + continue; + pravilno: + putchar('1'); + goto terminator_check; + napaka: + putchar('0'); + terminator_check: + stanje = ČAKAM; + if (znak == ' ') + stanje = PRVI; + if (znak == '\n') + goto konec; + continue; + pravilno_in_konec: + putchar('1'); + konec: + putchar('\n'); + return 0; + } + return 1; +} -- cgit v1.2.3