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/BERIME.txt" | 3 + ...63230317.kasnej\305\241a_sprememba_po_oddaji.c" | 36 +++++++ "\305\241ola/p2/dn/DN02a_63230317.c" | 85 +++++++++++++++++ "\305\241ola/p2/dn/DN02b_63230317.c" | 105 +++++++++++++++++++++ 4 files changed, 229 insertions(+) create mode 100644 "\305\241ola/p2/dn/BERIME.txt" create mode 100644 "\305\241ola/p2/dn/DN01a_63230317.kasnej\305\241a_sprememba_po_oddaji.c" create mode 100644 "\305\241ola/p2/dn/DN02a_63230317.c" create mode 100644 "\305\241ola/p2/dn/DN02b_63230317.c" diff --git "a/\305\241ola/p2/dn/BERIME.txt" "b/\305\241ola/p2/dn/BERIME.txt" new file mode 100644 index 0000000..b4dd127 --- /dev/null +++ "b/\305\241ola/p2/dn/BERIME.txt" @@ -0,0 +1,3 @@ +Medtem ko so rešitve DN v mapi ../p1/dn ustrezne (pravilne), rešitve tu niso, ker jih pred oddajo nisem preverjal s skritimi testnimi primeri, ampak sem jih samo oddal. + +Recimo za prvo nalogo sem dobil nič točk, zato pazite, ko te rešitve uporabljate za učenje -- morda so napačne! diff --git "a/\305\241ola/p2/dn/DN01a_63230317.kasnej\305\241a_sprememba_po_oddaji.c" "b/\305\241ola/p2/dn/DN01a_63230317.kasnej\305\241a_sprememba_po_oddaji.c" new file mode 100644 index 0000000..f55755a --- /dev/null +++ "b/\305\241ola/p2/dn/DN01a_63230317.kasnej\305\241a_sprememba_po_oddaji.c" @@ -0,0 +1,36 @@ +#include +int nextInt () { + int r = 0; + int minus = 0; + for (int števka = '0'; števka == '-' || (števka <= '9' && števka >= '0'); števka = getchar()) { + if (števka == '-') { + if (r != 0) + break; + minus = !minus; + continue; + } + r = r*10+števka-'0'; + } + return minus ? -r : r; +} +void printInt (int a) { + if (a < 0) { + a = -a; + putchar('-'); + } + int l = 1; + int c = a/10; + while (c > 0) { + l *= 10; + c /= 10; + } + while (l) { + putchar('0'+(a/l)%10); + l /= 10; + } +} +int main (void) { + printInt(nextInt()+nextInt()); + putchar('\n'); + return 0; +} diff --git "a/\305\241ola/p2/dn/DN02a_63230317.c" "b/\305\241ola/p2/dn/DN02a_63230317.c" new file mode 100644 index 0000000..c9bbad2 --- /dev/null +++ "b/\305\241ola/p2/dn/DN02a_63230317.c" @@ -0,0 +1,85 @@ +#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('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; +} 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