diff options
Diffstat (limited to 'inf/rtk/2021-šolsko-delo/2.c')
-rw-r--r-- | inf/rtk/2021-šolsko-delo/2.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/inf/rtk/2021-šolsko-delo/2.c b/inf/rtk/2021-šolsko-delo/2.c new file mode 100644 index 0000000..1e10fa8 --- /dev/null +++ b/inf/rtk/2021-šolsko-delo/2.c @@ -0,0 +1,36 @@ +#include <stdio.h> +#include <stdlib.h> + +int podprogram (int * t /* tabela s kovanci */, int l /* dolzina tabele */) { + int c = 0; /* oznacuje, kje v tabeli trenutno smo */ + int s = 0; /* sestevek */ + int a = -2; /* kateri kupcek smo pobrali nazadnje */ + int i = 0; /* indeks pri iteraciji */ + while (c < l) { /* za vsak kupcek */ + if (c-a > 1 && t[c] >= t[c+1]) { /* poberemo le, ce prej nismo pobarli in ce je naslednji manjsi ali enak trenutnemu */ + for (i = c; i > a + 1; i = i - 2) /* ce je nekaj kupckov vmes med prejsnjim pobranim in tem, so urejeni po velikosti, gremo vzvratno in poberemo vsakega drugega. tukaj se pobere tudi trenutni. */ + s += t[i]; + a = c; + } + c++; + } + return s; /* vrnemo seštevek */ +} + +#if __INCLUDE_LEVEL__ == 0 +int main (int argc, char ** argv) { + if (argc < 2) { /* ni bilo povedanih nobenih kupckov */ + fprintf(stderr, "uporaba: %s 1 2 3 4 ...\n", argv[0]); + return 1; /* zapremo program */ + } + int * t = malloc(sizeof(int)*argc); /* pripravimo prostor za tabelo s kupcki, en kupcek vec */ + int i = 1; /* indeks pri iteracijah */ + for (i = 1; i < argc; i++) /* pretvorimo vhodne kupcke iz nizov v cela stevila */ + t[i-1] = atoi(argv[i]); /* in jih postavimo v tabelo */ + t[i-1] = 0; /* potrebujemo en namisljen kupcek vec, ki nima smeti v vrednosti */ + fprintf(stdout, "sestevek: %d\n", podprogram(t, argc-1)); /* pozenemo podprogram in natisnemo izhodni sestevek */ + free(t); /* sprostimo spomin, kjer je bila tabela dinamično alocirana */ + t = NULL; /* zgolj kot dobro prakso vsakic po sproscanju nastavimo pointer na null, da preprecimo double-free napake (free ne naredi nicesar na naslovu 0x00) */ + return 0; /* z uspesnim statusom zapremo program */ +} +#endif |