Advertisement
dmilicev

Marija_Milicev_2021_0014.c

Feb 23rd, 2023 (edited)
791
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.45 KB | None | 0 0
  1. /*
  2.  
  3. Marija_Milicev_2021_0014.c
  4.  
  5. https://pastebin.com/EbHYscw9
  6.  
  7.  
  8. To je moj rad iz programiranja
  9.  
  10. Prva fja kao kazu da mi ne radi nesto sa matricama
  11. Al probacu posle da vidim
  12. Ali radilo je tamo na ispitu
  13.  
  14. Da, medjutim nije to ova dodaj sa listama nego je to fja cek
  15. Ovo int max_prodaja
  16. Bila je neka matrica, u prvoj kolon su sifre proizvifa,
  17. a u ostalim kolonama su kolicine prodatih priizvoda po danu pon uto sre cet pet
  18.  
  19. I treba za svaku sifru, tj. Za svaki ponaosob proizvod da se saberu prodati proizvodu
  20. Znaci da se sabira od j=1 kolone a ne 0
  21. I to mi je radilo isprobala sam tamo
  22.  
  23. Ne zna se broj redova a broj kolona je uvek 6
  24. I kao treba da se nadjd koji proizvod se najvise prodao
  25. To je ta fja moja int max_prodaja
  26.  
  27. Sifre   pon uto sre cet pet
  28. 12845   5   6   0   2   1
  29. 31962   10  3   1   2   0
  30. 38958   18  2   1   1   1
  31. ...
  32. ...
  33. ...
  34.  
  35.         {4974,5,10,12,0,1},
  36.         {211112,10,0,4,5,8},
  37.         {63158,0,3,1,55,33},
  38.         {4974,11,1,6,0,1},
  39.         {63158,0,13,1,7},
  40.         {2134,1,0,4,2,1}
  41.  
  42. */
  43.  
  44. #define _CRT_SECURE_NO_WARNINGS
  45. #include <stdio.h>
  46. #include <math.h>
  47. #include <stdlib.h>
  48. #include <limits.h>
  49.  
  50. // dodata deklaracija:
  51. int sumaBrojaProizvoda(int mat[][6], int n, int i);
  52.  
  53. typedef struct cvor CVOR;
  54. typedef struct cvor* PCVOR;
  55.  
  56. typedef struct prodaja {
  57.     int sifra_proizvoda;
  58.     int prodata_kolicina;
  59. }PRODAJA;
  60.  
  61. struct cvor {
  62.     PRODAJA prodaja;
  63.     PCVOR sledeci;
  64. };
  65.  
  66. void dodaj(PCVOR* glava, PRODAJA prodaja) {
  67.     PCVOR novi = malloc(sizeof(CVOR));
  68.     novi->prodaja = prodaja;
  69.     novi->sledeci = NULL;
  70.     if (*glava == NULL) {
  71.         *glava = novi;
  72.     }
  73.     else {
  74.         PCVOR tekuci = *glava;
  75.         while (tekuci->sledeci != NULL) {
  76.             tekuci = tekuci->sledeci;
  77.         }
  78.         tekuci->sledeci = novi;
  79.     }
  80. }
  81.  
  82. // kreira listu glava
  83. void kreiraj_listu(int info[][6], int n, PCVOR* glava) {
  84.     PRODAJA p;
  85.     for (int i = 0; i < n; i++)
  86.     {
  87.         p.sifra_proizvoda = info[i][0];
  88.         p.prodata_kolicina = sumaBrojaProizvoda(info, n, i);
  89.         dodaj(glava, p);
  90. //      printf("%8d %3d ", p.sifra_proizvoda, p.prodata_kolicina);
  91. //      printf("\n");
  92.     }
  93. //  printf("\n");
  94. }
  95.  
  96. // prikazuje listu glava
  97. void prikaziListu(PCVOR glava) {
  98.     PCVOR tekuci = glava;
  99.     while (tekuci != NULL) {
  100.         printf("%8d %3d \n", tekuci->prodaja.sifra_proizvoda, tekuci->prodaja.prodata_kolicina);
  101.         tekuci = tekuci->sledeci;
  102.     }
  103.     printf("\n");
  104. }
  105.  
  106. // vraca maksimalnu prodatu kolicinu
  107. int max_prodaja_kroz_listu(PCVOR glava) {
  108.     PCVOR tekuci = glava;
  109.     int max;
  110.     max = tekuci->prodaja.prodata_kolicina;
  111.  
  112.     while (tekuci != NULL) {
  113.         if (tekuci->prodaja.prodata_kolicina > max)
  114.             max = tekuci->prodaja.prodata_kolicina;
  115.         tekuci = tekuci->sledeci;
  116.     }
  117.     return max;
  118. }
  119.  
  120. // vraca index reda u kojem je maksimalna prodata kolicina
  121. int max_red_kroz_listu(PCVOR glava) {
  122.     PCVOR tekuci = glava;
  123.     int broj_tekuceg_reda=0;
  124.     int broj_max_reda;
  125.  
  126.     int max = tekuci->prodaja.prodata_kolicina;
  127.  
  128.     while (tekuci != NULL) {
  129.         if (tekuci->prodaja.prodata_kolicina > max){
  130.             max = tekuci->prodaja.prodata_kolicina;
  131.             broj_max_reda = broj_tekuceg_reda;
  132.         }
  133.         tekuci = tekuci->sledeci;
  134.         broj_tekuceg_reda++;
  135.     }
  136.     return broj_max_reda;
  137. }
  138. /*
  139. void sortiraj(PCVOR glava) {
  140.     PCVOR spori = glava;
  141.     PCVOR brzi = spori->sledeci;
  142.  
  143.     while (spori->sledeci != NULL) {
  144.         while (brzi != NULL) {
  145.             if (brzi->prodaja.prodata_kolicina < spori->prodaja.prodata_kolicina) {
  146.                 int pom = brzi->prodaja.prodata_kolicina;
  147.                 brzi->prodaja.prodata_kolicina = spori->prodaja.prodata_kolicina;
  148.                 spori->prodaja.prodata_kolicina = pom;
  149.             }
  150.             brzi = brzi->sledeci;
  151.         }
  152.         spori = spori->sledeci;
  153.         brzi = spori->sledeci;
  154.     }
  155. }
  156. */
  157. /*
  158. void izmeni(int sifra, int kolicina, PCVOR glava) {
  159.     PCVOR tekuci = glava;
  160.     while (tekuci != NULL) {
  161.         if (tekuci->prodaja.sifra_proizvoda == sifra) {
  162.             tekuci->prodaja.prodata_kolicina = kolicina;
  163.         }
  164.         tekuci = tekuci->sledeci;
  165.     }
  166. }
  167. */
  168.  
  169. /*
  170. int brojCifaraNekogBroja(int broj) {
  171.     int brojac = 0;
  172.     while (broj > 0) {
  173.         broj /= 10;
  174.         brojac++;
  175.     }
  176.     return brojac;
  177. }
  178. */
  179.  
  180. /*
  181. int proveri_sifru(int sifra) {
  182.     int brojCifara = brojCifaraNekogBroja(sifra);
  183.     if (brojCifara < 3 || brojCifara > 7) {
  184.         return 0;
  185.     }
  186.     int poslednjaCifra = sifra % 10;
  187.     if (poslednjaCifra % 2 == 1) {
  188.         return 0;
  189.     }
  190.     int prvaCifra = sifra / pow(10, brojCifara - 1);
  191.     if (prvaCifra % 2 == 1) {
  192.         return 0;
  193.     }
  194.  
  195.     return 1;
  196. }
  197. */
  198.  
  199. // u fajl naziv upisuje sifru proizvoda sa najvecom prodatom kolicinom
  200. void sacuvaj(int kolicina, char* naziv, PCVOR glava) {
  201.     FILE* dat = fopen(naziv, "w");
  202.  
  203.     PCVOR tekuci = glava;
  204.  
  205.     while (tekuci != NULL) {
  206.         if (kolicina == tekuci->prodaja.prodata_kolicina)
  207.             fprintf(dat, "%d,%d ", tekuci->prodaja.sifra_proizvoda, tekuci->prodaja.prodata_kolicina);
  208.         tekuci = tekuci->sledeci;
  209.     }
  210.  
  211.     fclose(dat);
  212. }
  213.  
  214. // vraca sumu prodatih kolicina i-tog reda matrice
  215. int sumaBrojaProizvoda(int mat[][6], int n, int i) {
  216.     int suma = 0;
  217.  
  218.     for (int j = 1; j < 6; j++)
  219.     {
  220.         suma = suma + mat[i][j];
  221.     }
  222.  
  223.     return suma;
  224. }
  225.  
  226. /*
  227. int max_prodaja(int info[][6], int n) {
  228.     int max = sumaBrojaProizvoda(info, n, 0);
  229.     for (int i = 0; i < n; i++)
  230.     {
  231.         int iti = sumaBrojaProizvoda(info, n, i);
  232.             if (iti > max) {
  233.                 max = iti;
  234.             }
  235.     }
  236.     return max;
  237. }
  238. */
  239.  
  240. int main(void) {
  241.  
  242.     PRODAJA p;
  243.     p.prodata_kolicina = 5;
  244.     p.sifra_proizvoda = 3536;
  245.  
  246.     PRODAJA p2;
  247.     p2.prodata_kolicina = 9;
  248.     p2.sifra_proizvoda = 66996;
  249.  
  250.     PRODAJA p3;
  251.     p3.prodata_kolicina = 3;
  252.     p3.sifra_proizvoda = 35596;
  253.  
  254.     PRODAJA p4;
  255.     p4.prodata_kolicina = 1;
  256.     p4.sifra_proizvoda = 399996;
  257.  
  258.     PCVOR glava = NULL;
  259.  
  260.     // Matrica ti koristi da samo kreiras listu i nikad vise.
  261.     // Posle radis samo sa listom.
  262.     int mat[50][6] = {
  263.         {4974,5,10,12,0,1},
  264.         {211112,10,0,4,5,8},
  265.         {63158,0,3,1,55,33},
  266.         {4974,11,1,6,0,1},
  267.         {63158,0,13,1,7},
  268.         {2134,1,0,4,2,1}
  269.     };
  270.     int n = 6;
  271.  
  272.     kreiraj_listu(mat, n, &glava);
  273.     prikaziListu(glava);
  274.  
  275.     int k = max_prodaja_kroz_listu(glava);
  276.     int m = max_red_kroz_listu(glava) + 1; // +1 jer broji redove od 1
  277.  
  278.     printf("\n U listi najveci zbir je %d u %d redu. \n", k, m);
  279.  
  280.     sacuvaj(k,"dat.txt",glava); // u fajlu cuva sifru sa max prodajom
  281.  
  282.     /*int suma = sumaBrojaProizvda(mat, n, 0);
  283.     printf("%d ", suma);*/
  284.  
  285.     /*int max = max_prodaja(mat, n);
  286.     printf("max prodaja je: %d", max);*/
  287.  
  288.     /*dodaj(&glava, p);
  289.     dodaj(&glava, p2);
  290.     dodaj(&glava, p3);
  291.     dodaj(&glava, p4);*/
  292.  
  293.     /*prikaziListu(glava);*/
  294.  
  295.     /*sortiraj(glava);
  296.     prikaziListu(glava);*/
  297.  
  298.  
  299. //  izmeni(66996, 18, glava);
  300. //  prikaziListu(glava);
  301.  
  302. //  int br = brojCifaraNekogBroja(14);
  303. //  printf("Broj cifara broja %d je: %d \n", 14, br);
  304.  
  305.     return 0;
  306. }
  307.  
  308.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement