static void Postoji_zanr_od_tog_rezisera(Podaci_o_filmovima_rezisera reziser_zanrovi, string[] niz_ulazni_zanrovi) //proveriti zagrade { for (int i = 0; i < niz_ulazni_zanrovi.Length; i++) { for (int j = 0; j < reziser_zanrovi.zanrovi.Length; j++) { if (niz_ulazni_zanrovi[i] == reziser_zanrovi.zanrovi[j]) { reziser_zanrovi.br_filmovi[j]++; } } } }
//Glavna metoda obrade: izdvajaju se reziseri, njihovi filmovi i zarade filmova iz zadatog perioda static Podaci_o_filmovima_rezisera[] Izdvajanje_filmova_sa_reziserima_u_zadatom_periodu(string[,] podaci_matrica, DateTime[] niz_period) { Podaci_o_filmovima_rezisera[] reziser_filmovi = new Podaci_o_filmovima_rezisera[1000]; //niz struktura - jedna struktura: ime rezisera, njegovi filmovi, zarade filmova i ukupna zarada int brojac_struktura = 0; //brojac razlicitih rezisera(brojac-1 dalje u programu) int[] brojaci_filmova = new int[1000]; //brojac filmova za jednog rezisera int indeks_rezisera = 0; string film, datum; double zarada; for (int i = 0; i < brojaci_filmova.Length; i++) { brojaci_filmova[i] = 0; } for (int i = 0; i < podaci_matrica.GetLength(0); i++) { datum = podaci_matrica[i, 3]; if (!Ulazi_u_period(datum, niz_period)) { continue; } zarada = IzbacivanjeDolara(podaci_matrica[i, 5]); film = podaci_matrica[i, 1]; indeks_rezisera = Indeks_trazenog_rezisera(podaci_matrica[i, 4], reziser_filmovi); if (indeks_rezisera != -1) { Array.Resize(ref reziser_filmovi[indeks_rezisera].filmovi, brojaci_filmova[indeks_rezisera] + 1); //prosirivanje niza filmova za jednog rezisera Array.Resize(ref reziser_filmovi[indeks_rezisera].zarade, brojaci_filmova[indeks_rezisera] + 1); //prosirivanje niza zarada filmova za jednog rezisera reziser_filmovi[indeks_rezisera].filmovi[brojaci_filmova[indeks_rezisera]] = film; reziser_filmovi[indeks_rezisera].zarade[brojaci_filmova[indeks_rezisera]] = zarada; brojaci_filmova[indeks_rezisera]++; //postavlja se indeks za upis sledeceg filma za datog rezisera } else { reziser_filmovi[brojac_struktura].reziser = podaci_matrica[i, 4]; Array.Resize(ref reziser_filmovi[brojac_struktura].filmovi, 1); reziser_filmovi[brojac_struktura].filmovi[0] = film; brojaci_filmova[brojac_struktura] = 1; //postavlja se indeks za upis sledeceg filma za datog rezisera Array.Resize(ref reziser_filmovi[brojac_struktura].zarade, 1); reziser_filmovi[brojac_struktura].zarade[0] = zarada; reziser_filmovi[brojac_struktura].ukupna_zarada = 0; brojac_struktura++; } } Array.Resize(ref reziser_filmovi, brojac_struktura); return(reziser_filmovi); }
//Glavna metoda obrade: izdvajaju se reziseri, njihovi zanrovi i broj zanrova static Podaci_o_filmovima_rezisera[] Izdvajanje_zanrova_filmova_sa_reziserima(string[,] podaci_matrica, string[] zanr_niz) { Podaci_o_filmovima_rezisera[] reziser_zanrovi = new Podaci_o_filmovima_rezisera[1000]; int brojac_struktura = 0; //brojac razlicitih rezisera(brojac-1 dalje u programu) string[] niz_ulazni_zanrovi; for (int i = 0; i < podaci_matrica.GetLength(0); i++) { niz_ulazni_zanrovi = podaci_matrica[i, 2].Split("|"); int indeks = Vec_postoji_reziser(reziser_zanrovi, podaci_matrica[i, 4], brojac_struktura); if (indeks != -1) { for (int k = 0; k < zanr_niz.Length; k++) { if (Poredjenje_sa_konzolom(zanr_niz[k], niz_ulazni_zanrovi)) { Postoji_zanr_od_tog_rezisera(reziser_zanrovi[indeks], niz_ulazni_zanrovi); } } } else { int brojac = 0; reziser_zanrovi[brojac_struktura].br_filmovi = new int [zanr_niz.Length]; reziser_zanrovi[brojac_struktura].zanrovi = new string [zanr_niz.Length]; for (int k = 0; k < zanr_niz.Length; k++) { if (Poredjenje_sa_konzolom(zanr_niz[k], niz_ulazni_zanrovi)) { reziser_zanrovi[brojac_struktura].reziser = podaci_matrica[i, 4]; reziser_zanrovi[brojac_struktura].zanrovi[brojac] = zanr_niz[k]; reziser_zanrovi[brojac_struktura].br_filmovi[brojac] = 1; brojac++; } } Array.Resize(ref reziser_zanrovi[brojac_struktura].br_filmovi, brojac); Array.Resize(ref reziser_zanrovi[brojac_struktura].zanrovi, brojac); brojac_struktura++; } } Array.Resize(ref reziser_zanrovi, brojac_struktura); return(reziser_zanrovi); }