diff options
-rw-r--r-- | šola/p2/dn/BERIME.txt | 3 | ||||
-rw-r--r-- | šola/p2/dn/DN01a_63230317.kasnejša_sprememba_po_oddaji.c | 36 | ||||
-rw-r--r-- | šola/p2/dn/DN02a_63230317.c | 85 | ||||
-rw-r--r-- | šola/p2/dn/DN02b_63230317.c | 105 |
4 files changed, 229 insertions, 0 deletions
diff --git a/šola/p2/dn/BERIME.txt b/šola/p2/dn/BERIME.txt new file mode 100644 index 0000000..b4dd127 --- /dev/null +++ b/šola/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/šola/p2/dn/DN01a_63230317.kasnejša_sprememba_po_oddaji.c b/šola/p2/dn/DN01a_63230317.kasnejša_sprememba_po_oddaji.c new file mode 100644 index 0000000..f55755a --- /dev/null +++ b/šola/p2/dn/DN01a_63230317.kasnejša_sprememba_po_oddaji.c @@ -0,0 +1,36 @@ +#include <stdio.h> +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/š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; +} diff --git a/šola/p2/dn/DN02b_63230317.c b/šola/p2/dn/DN02b_63230317.c new file mode 100644 index 0000000..ebaa364 --- /dev/null +++ b/šola/p2/dn/DN02b_63230317.c @@ -0,0 +1,105 @@ +#include <stdio.h> +#include <stdbool.h> +#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; +} |