Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Marija_Milicev_2021_0014 v2.c
- https://pastebin.com/Uy2Vb4Ph
- To je moj rad iz programiranja
- Prva fja kao kazu da mi ne radi nesto sa matricama
- Al probacu posle da vidim
- Ali radilo je tamo na ispitu
- Da, medjutim nije to ova dodaj sa listama nego je to fja cek
- Ovo int max_prodaja
- Bila je neka matrica, u prvoj kolon su sifre proizvifa,
- a u ostalim kolonama su kolicine prodatih priizvoda po danu pon uto sre cet pet
- I treba za svaku sifru, tj. Za svaki ponaosob proizvod da se saberu prodati proizvodu
- Znaci da se sabira od j=1 kolone a ne 0
- I to mi je radilo isprobala sam tamo
- Ne zna se broj redova a broj kolona je uvek 6
- I kao treba da se nadjd koji proizvod se najvise prodao
- To je ta fja moja int max_prodaja
- Sifre pon uto sre cet pet
- 12845 5 6 0 2 1
- 31962 10 3 1 2 0
- 38958 18 2 1 1 1
- ...
- ...
- ...
- {4974,5,10,12,0,1},
- {211112,10,0,4,5,8},
- {63158,0,3,1,55,33},
- {4974,11,1,6,0,1},
- {63158,0,13,1,7},
- {2134,1,0,4,2,1}
- */
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #include <limits.h>
- // dodata deklaracija:
- int sumaBrojaProizvoda(int mat[][6], int n, int i);
- typedef struct cvor CVOR;
- typedef struct cvor* PCVOR;
- typedef struct prodaja {
- int sifra_proizvoda;
- int prodata_kolicina;
- }PRODAJA;
- struct cvor {
- PRODAJA prodaja;
- PCVOR sledeci;
- };
- void dodaj(PCVOR* glava, PRODAJA prodaja) {
- PCVOR novi = malloc(sizeof(CVOR));
- novi->prodaja = prodaja;
- novi->sledeci = NULL;
- if (*glava == NULL) {
- *glava = novi;
- }
- else {
- PCVOR tekuci = *glava;
- while (tekuci->sledeci != NULL) {
- tekuci = tekuci->sledeci;
- }
- tekuci->sledeci = novi;
- }
- }
- // kreira listu glava
- void kreiraj_listu(int info[][6], int n, PCVOR* glava) {
- PRODAJA p;
- for (int i = 0; i < n; i++)
- {
- p.sifra_proizvoda = info[i][0];
- p.prodata_kolicina = sumaBrojaProizvoda(info, n, i);
- dodaj(glava, p);
- // printf("%8d %3d ", p.sifra_proizvoda, p.prodata_kolicina);
- // printf("\n");
- }
- // printf("\n");
- }
- // prikazuje listu glava
- void prikaziListu(PCVOR glava) {
- PCVOR tekuci = glava;
- while (tekuci != NULL) {
- printf("%8d %3d \n", tekuci->prodaja.sifra_proizvoda, tekuci->prodaja.prodata_kolicina);
- tekuci = tekuci->sledeci;
- }
- printf("\n");
- }
- // vraca maksimalnu prodatu kolicinu
- int max_prodaja_kroz_listu(PCVOR glava) {
- PCVOR tekuci = glava;
- int max;
- max = tekuci->prodaja.prodata_kolicina;
- while (tekuci != NULL) {
- if (tekuci->prodaja.prodata_kolicina > max)
- max = tekuci->prodaja.prodata_kolicina;
- tekuci = tekuci->sledeci;
- }
- return max;
- }
- // vraca index reda u kojem je maksimalna prodata kolicina
- int max_red_kroz_listu(PCVOR glava) {
- PCVOR tekuci = glava;
- int broj_tekuceg_reda=0;
- int broj_max_reda;
- int max = tekuci->prodaja.prodata_kolicina;
- while (tekuci != NULL) {
- if (tekuci->prodaja.prodata_kolicina > max){
- max = tekuci->prodaja.prodata_kolicina;
- broj_max_reda = broj_tekuceg_reda;
- }
- tekuci = tekuci->sledeci;
- broj_tekuceg_reda++;
- }
- return broj_max_reda;
- }
- /*
- void sortiraj(PCVOR glava) {
- PCVOR spori = glava;
- PCVOR brzi = spori->sledeci;
- while (spori->sledeci != NULL) {
- while (brzi != NULL) {
- if (brzi->prodaja.prodata_kolicina < spori->prodaja.prodata_kolicina) {
- int pom = brzi->prodaja.prodata_kolicina;
- brzi->prodaja.prodata_kolicina = spori->prodaja.prodata_kolicina;
- spori->prodaja.prodata_kolicina = pom;
- }
- brzi = brzi->sledeci;
- }
- spori = spori->sledeci;
- brzi = spori->sledeci;
- }
- }
- */
- /*
- void izmeni(int sifra, int kolicina, PCVOR glava) {
- PCVOR tekuci = glava;
- while (tekuci != NULL) {
- if (tekuci->prodaja.sifra_proizvoda == sifra) {
- tekuci->prodaja.prodata_kolicina = kolicina;
- }
- tekuci = tekuci->sledeci;
- }
- }
- */
- /*
- int brojCifaraNekogBroja(int broj) {
- int brojac = 0;
- while (broj > 0) {
- broj /= 10;
- brojac++;
- }
- return brojac;
- }
- */
- /*
- int proveri_sifru(int sifra) {
- int brojCifara = brojCifaraNekogBroja(sifra);
- if (brojCifara < 3 || brojCifara > 7) {
- return 0;
- }
- int poslednjaCifra = sifra % 10;
- if (poslednjaCifra % 2 == 1) {
- return 0;
- }
- int prvaCifra = sifra / pow(10, brojCifara - 1);
- if (prvaCifra % 2 == 1) {
- return 0;
- }
- return 1;
- }
- */
- // u fajl naziv upisuje sifru proizvoda sa najvecom prodatom kolicinom
- void sacuvaj(int kolicina, char* naziv, PCVOR glava) {
- FILE* dat = fopen(naziv, "w");
- PCVOR tekuci = glava;
- while (tekuci != NULL) {
- if (kolicina == tekuci->prodaja.prodata_kolicina)
- fprintf(dat, "%d,%d ", tekuci->prodaja.sifra_proizvoda, tekuci->prodaja.prodata_kolicina);
- tekuci = tekuci->sledeci;
- }
- fclose(dat);
- }
- // vraca sumu prodatih kolicina i-tog reda matrice
- int sumaBrojaProizvoda(int mat[][6], int n, int i) {
- int suma = 0;
- for (int j = 1; j < 6; j++)
- {
- suma = suma + mat[i][j];
- }
- return suma;
- }
- // prikazuje matricu
- void prikazi_matricu(int info[][6], int n){
- printf("\n Prikaz matrice: \n");
- printf("\n Sifra pon uto sre cet pet \n\n");
- for(int i=0;i<n;i++) { // print matrix
- for(int j=0;j<6;j++)
- printf(" %7d",info[i][j]);
- printf("\n\n"); // new row of matrix
- }
- }
- // u matrici info nalazi max_red koji ima najvecu max_prodaja
- void max_prodaja_i_max_red_kroz_matricu(int info[][6], int n, int *max_p, int *max_r){
- int max_prodaja = sumaBrojaProizvoda(info, n, 0);
- int max_red;
- for (int i = 0; i < n; i++)
- {
- int iti = sumaBrojaProizvoda(info, n, i);
- if (iti > max_prodaja) {
- max_prodaja = iti;
- max_red = i;
- }
- }
- *max_p = max_prodaja;
- *max_r = max_red;
- }
- // vraca max_prodaja iz matrice
- int max_prodaja_kroz_matricu(int info[][6], int n) {
- int max_prodaja = sumaBrojaProizvoda(info, n, 0);
- for (int i = 0; i < n; i++) {
- int iti = sumaBrojaProizvoda(info, n, i);
- if (iti > max_prodaja)
- max_prodaja = iti;
- }
- return max_prodaja;
- }
- // iz matrice info vraca index reda koji ima najvecu prodaju max_prodaja
- int max_index_kroz_matricu(int info[][6], int n) {
- int max_red;
- int max_prodaja = sumaBrojaProizvoda(info, n, 0);
- for (int i = 0; i < n; i++) {
- int iti = sumaBrojaProizvoda(info, n, i);
- if (iti > max_prodaja) {
- max_prodaja = iti;
- max_red = i;
- }
- }
- return max_red;
- }
- int main(void) {
- PRODAJA p;
- p.prodata_kolicina = 5;
- p.sifra_proizvoda = 3536;
- PRODAJA p2;
- p2.prodata_kolicina = 9;
- p2.sifra_proizvoda = 66996;
- PRODAJA p3;
- p3.prodata_kolicina = 3;
- p3.sifra_proizvoda = 35596;
- PRODAJA p4;
- p4.prodata_kolicina = 1;
- p4.sifra_proizvoda = 399996;
- PCVOR glava = NULL;
- // Matrica ti koristi da samo kreiras listu i nikad vise.
- // Posle radis samo sa listom.
- int mat[50][6] = {
- {4974,5,10,12,0,1},
- {211112,10,0,4,5,8},
- {63158,0,3,1,55,33},
- {4974,11,1,6,0,1},
- {63158,0,13,1,7},
- {2134,1,0,4,2,1}
- };
- int n = 6;
- int max_prodaja;
- int max_red;
- prikazi_matricu(mat, 6);
- max_prodaja = max_prodaja_kroz_matricu(mat,n);
- max_red = max_index_kroz_matricu(mat,n);
- printf("\n U matrici mat najveci zbir je %d u %d redu. \n\n", max_prodaja, max_red+1);
- // ili ovako:
- printf(" Ili ovako : \n");
- max_prodaja_i_max_red_kroz_matricu(mat, n, &max_prodaja, &max_red);
- printf("\n U matrici mat najveci zbir je %d u %d redu. \n\n", max_prodaja, max_red+1);
- // ili preko liste:
- printf(" Ili preko liste : \n\n");
- kreiraj_listu(mat, n, &glava);
- prikaziListu(glava);
- max_prodaja = max_prodaja_kroz_listu(glava);
- max_red = max_red_kroz_listu(glava) + 1; // +1 jer broji redove od 1
- printf("\n U listi najveci zbir je %d u %d redu. \n", max_prodaja, max_red);
- sacuvaj(max_prodaja,"dat.txt",glava); // u fajlu cuva sifru sa max prodajom
- /*int suma = sumaBrojaProizvda(mat, n, 0);
- printf("%d ", suma);*/
- /*int max = max_prodaja_kroz_matricu(mat, n);
- printf("max prodaja je: %d", max);*/
- /*dodaj(&glava, p);
- dodaj(&glava, p2);
- dodaj(&glava, p3);
- dodaj(&glava, p4);*/
- /*prikaziListu(glava);*/
- /*sortiraj(glava);
- prikaziListu(glava);*/
- // izmeni(66996, 18, glava);
- // prikaziListu(glava);
- // int br = brojCifaraNekogBroja(14);
- // printf("Broj cifara broja %d je: %d \n", 14, br);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement