summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--šola/p2/dn/BERIME.txt3
-rw-r--r--šola/p2/dn/DN01a_63230317.kasnejša_sprememba_po_oddaji.c36
-rw-r--r--šola/p2/dn/DN02a_63230317.c85
-rw-r--r--šola/p2/dn/DN02b_63230317.c105
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;
+}