From 2057a987a330e086659a9bf95fa69cf168f861a3 Mon Sep 17 00:00:00 2001 From: sijanec Date: Fri, 15 Jan 2021 08:22:07 +0100 Subject: =?UTF-8?q?joj=20=C5=A1ol?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inf/rtk/2020-offline/origprog.c | 78 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 inf/rtk/2020-offline/origprog.c (limited to 'inf/rtk/2020-offline/origprog.c') diff --git a/inf/rtk/2020-offline/origprog.c b/inf/rtk/2020-offline/origprog.c new file mode 100644 index 0000000..631d61d --- /dev/null +++ b/inf/rtk/2020-offline/origprog.c @@ -0,0 +1,78 @@ +#include +#include +#include +#include +size_t rtk_resi (/* const */ char * s, struct rtk_kos * p) { + size_t i = 0; + size_t j = 0; + size_t k = 0; + size_t l = strlen(s); + size_t p_sizeof = RTK_RAM_KOS; size_t pzi = 0; /* pieces za izdelavo */ + size_t pjev = 0; size_t psd = 0; /* pieces sigma dolžin */; + /* struct rtk_kos * */ p = malloc(sizeof(struct rtk_kos)*p_sizeof); + /* začnemo s preprosto rešitvijo: en kos, celoten niz */ + p[0].o = 0; p[0].l = l; p[0].p = 1; pjev++; psd = l; pzi = 1; + /* iščemo ponovitve za izboljšavo, začnemo z dolžino 2 */ + /* kosov, velikih 1, še ne potrebujemo */ + /* POMNI: izračun točk: psd+pzi */ + for (i = 2; i < l; i++) { /* za vsako možno dolžino kosa */ + for (j = 0; j < l-i; j++) { /* za vsako lokacijo, kjer bi se začel kos */ + // fprintf(stderr, "%.*s\n", i, s+j); + } + } + return pjev; +} +int main (int argc, char ** argv) { + char ** n = malloc(sizeof(char *) * 1); + size_t * v = malloc(sizeof(size_t) * 1); + size_t nalog = 0; + int returnstatus = 0; + char c = getchar(); + int vrs = 0; + size_t pjev; + char fn[69]; + FILE * fd; + struct rtk_kos * p; + n[0] = NULL; + v[0] = 0; + while (!feof(stdin)) { + n[nalog] = realloc(n[nalog], sizeof(char)*v[nalog]+2); + n[nalog][v[nalog]++] = c; + n[nalog][v[nalog]] = '\0'; + if (c == RTK_EOL) { + if (vrs == 0 && strncmp("Stiskanje", n[0], strlen("Stiskanje") != 0)) { + fprintf(stderr, "vhodna datoteka se ne začne s \"Stiskanje\"\n"); + returnstatus = 1; + goto returncleanly; + } + if ((vrs - 2) % 3 == 2) { /* če je bila to naloga */ + fprintf(stderr, "prepisal nalogo %lu\r", nalog); + nalog++; + n = realloc(n, sizeof(char*)*(nalog+1)); + n[nalog] = NULL; + v = realloc(v, sizeof(size_t)*(nalog+1)); + } + v[nalog] = 0; /* gremo na začetek prostora za nalogo */ + vrs++; + } + c = getchar(); + } + fprintf(stderr, "zapisal naloge v spomin. \n"); + for (vrs = 0; vrs < nalog; vrs++) { + fprintf(stderr, "rešujem nalogo %d\n", vrs); + pjev = rtk_resi(n[vrs], p); + free(p); + p = NULL; + } + returncleanly: + while (nalog > 0) { + nalog--; + free(n[nalog]); + n[nalog] = NULL; + } + free(n); + n = NULL; + free(v); + v = NULL; + return returnstatus; +} -- cgit v1.2.3