/// <summary> /// Randa, kuria diena buvo pagamiinta daugiausiai detaliu /// </summary> /// <param name="dvimatis">dvimatis objektas</param> /// <param name="visiDarbininkai">objektas</param> /// <param name="diena">grazina daugiausiai pelno atnesusia diena</param> /// <param name="count">dienu skaicius</param> /// <param name="pirmas">jei primas menesis - true, jei antras false</param> static void DaugiausiaiPagamintaDetaliu(Konteinerine dvimatis, Konteinerine visiDarbininkai, out int diena, int count, bool pirmas) { diena = 0; int maxDet = 0; int suma; for (int i = 0; i < count; i++) { suma = 0; for (int j = 0; j < dvimatis.darbSk; j++) { if (pirmas) { suma += dvimatis.Imti(i, j).detaliuSk; } else { suma += dvimatis.Imti2(i, j).detaliuSk; } } if (maxDet < suma) { diena = i; maxDet = suma; } } }
/// <summary> /// Paraso i rezultatu faila pavedimu i banka sarasa /// </summary> /// <param name="dvimatis">dvimatis objektas</param> /// <param name="visiDarbininkai">objektas</param> /// <param name="f2">rezultatu failas</param> static void PavedimuSarasas(Konteinerine dvimatis, Konteinerine visiDarbininkai, string f2) { int bankuCount = 0; string[] Bankai = new string[dvimatis.darbSk]; for (int i = 0; i < dvimatis.darbSk; i++) { if (!Bankai.Contains(visiDarbininkai.darbininkoMasyvas[i].bankas)) { Bankai[bankuCount++] = visiDarbininkai.darbininkoMasyvas[i].bankas; } } using (var writer = File.AppendText(f2)) { writer.WriteLine(); for (int i = 0; i < bankuCount; i++) { writer.WriteLine("--------------------------------------------------------------"); writer.WriteLine("Banko pavadinimas: {0}", Bankai[i]); writer.WriteLine("--------------------------------------------------------------"); writer.WriteLine("Vardas | Pavarde | Sask nr.| Pirmo men | Antro men "); writer.WriteLine("--------------------------------------------------------------"); for (int j = 0; j < dvimatis.darbSk; j++) { if (Bankai[i] == visiDarbininkai.darbininkoMasyvas[j].bankas) { writer.WriteLine("{0,-10} | {1,-10} | {2,-7} | {3,5}eur. | {4,5}eur.", visiDarbininkai.darbininkoMasyvas[j].pavarde, visiDarbininkai.darbininkoMasyvas[j].vardas, visiDarbininkai.darbininkoMasyvas[j].bankSask, visiDarbininkai.darbininkoMasyvas[j].alga, visiDarbininkai.darbininkoMasyvas[j].alga2); } } writer.WriteLine(); } } }
static void Main(string[] args) { const int MaxDarbininku = 1000; const string CDd = "..\\..\\Duomenys.txt"; const string CRr = "..\\..\\Rezultatai.txt"; File.Delete(CRr); Konteinerine dvimatis = new Konteinerine(); Konteinerine visiDarbininkai = new Konteinerine(MaxDarbininku); Skaityti(CDd, dvimatis, visiDarbininkai); ///<pirmo menesio info> bool pirmas = true; Atlyginimas(dvimatis, visiDarbininkai, dvimatis.dienSk, pirmas); int index; MaziausiaiSekesi(dvimatis, visiDarbininkai, out index, pirmas); int diena; DaugiausiaiPagamintaDetaliu(dvimatis, visiDarbininkai, out diena, dvimatis.dienSk, pirmas); int nr = 1; SurasoIFaila(dvimatis, visiDarbininkai, index, diena, CRr, nr, pirmas); ///<antro menesio> pirmas = false; Atlyginimas(dvimatis, visiDarbininkai, dvimatis.dienuSk2, pirmas); int index2; MaziausiaiSekesi(dvimatis, visiDarbininkai, out index2, pirmas); int diena2; DaugiausiaiPagamintaDetaliu(dvimatis, visiDarbininkai, out diena2, dvimatis.dienuSk2, pirmas); nr = 2; SurasoIFaila(dvimatis, visiDarbininkai, index2, diena2, CRr, nr, pirmas); PavedimuSarasas(dvimatis, visiDarbininkai, CRr); using (var writer = File.AppendText(CRr)) { writer.WriteLine("Silpniausias pirmo men darbuotojas - {0} {1}", visiDarbininkai.darbininkoMasyvas[index].vardas, visiDarbininkai.darbininkoMasyvas[index].pavarde); writer.WriteLine("pirma menesi uzdirbo: {0}, o antraji: {1}", visiDarbininkai.darbininkoMasyvas[index].alga, visiDarbininkai.darbininkoMasyvas[index].alga2); if (visiDarbininkai.darbininkoMasyvas[index].alga < visiDarbininkai.darbininkoMasyvas[index].alga2) { writer.WriteLine("Darbuotojas pagerino praejusio menesio rezultatus"); } else { writer.WriteLine("Darbuotojas nepagerino praejusio menesio rezultatu"); } } }
/// <summary> /// Nuskaito duomenis is failu /// </summary> /// <param name="zaidimai">Konteinerines klases objektas</param> /// <param name="file">Atsinesti failu pavadinimai</param>> public static void ReadData(string file, Konteinerine[] zaidimai) { string ratas = null; string data = null; using (StreamReader reader = new StreamReader(@file)) { string line = null; if ((line = reader.ReadLine()) != null) { ratas = line; } if ((line = reader.ReadLine()) != null) { data = line; } Konteinerine konteinerine = ZaidimoRatas(zaidimai, ratas); while (null != (line = reader.ReadLine())) { string[] values = line.Split(','); char tipas = Convert.ToChar(line[0]); string vardas = values[1]; string pavarde = values[2]; string komanda = values[3]; switch (tipas) { case 'L': string pozicija = values[4]; string cempionas = values[5]; int nuzudymai = int.Parse(values[6]); int mirtys = int.Parse(values[7]); int dalyvNuzud = int.Parse(values[8]); LOLZaidejas lolzaidejas = new LOLZaidejas(vardas, pavarde, komanda, pozicija, cempionas, nuzudymai, mirtys, dalyvNuzud); //if (!konteinerine.lolzaidejuMasyvas.Contains(lolzaidejas)) { konteinerine.PridetiLOLzaideja(lolzaidejas); } break; case 'C': int nuzudymai1 = int.Parse(values[4]); int mirtys1 = int.Parse(values[5]); string megstGinklas = values[6]; CSZaidejas cszaidejas = new CSZaidejas(vardas, pavarde, komanda, nuzudymai1, mirtys1, megstGinklas); //if (!konteinerine.cszaidejuMasyvas.Contains(cszaidejas)) { konteinerine.PridetiCSzaideja(cszaidejas); } break; } } } }
static void Main(string[] args) { Konteinerine[] zaidimai = new Konteinerine[RatuSkaicius]; zaidimai[0] = new Konteinerine("1"); zaidimai[1] = new Konteinerine("2"); zaidimai[2] = new Konteinerine("3"); string[] filePaths = Directory.GetFiles(Directory.GetCurrentDirectory(), "*new.txt"); foreach (string path in filePaths) { ReadData(path, zaidimai); } // visi zaidejai is skirtingu ratu surasomi i viena objekta LOLZaidejas[] VisiLolZaidejai = new LOLZaidejas[MaxZaideju]; int lolcount = 0; SurasmasLolZaideju(zaidimai, out lolcount, ref VisiLolZaidejai); CSZaidejas[] VisiCsZaidejai = new CSZaidejas[MaxZaideju]; int cscount = 0; SurasmasCsZaideju(zaidimai, out cscount, ref VisiCsZaidejai); int newCount = 0; Zaidejas[] Sarasas = new Zaidejas[MaxZaideju]; for (int i = 0; i < lolcount; i++) { Sarasas[i] = VisiLolZaidejai[i]; newCount++; } for (int i = 0; i < cscount; i++) { Sarasas[newCount] = VisiCsZaidejai[i]; newCount++; } LOLZaidejas zaid = new LOLZaidejas(); for (int i = 0; i < newCount; i++) { if (Sarasas[i].GetType() == typeof(LOLZaidejas))// zaid.GetType()) { Console.WriteLine(Sarasas[i].ToString()); } } //---------------------------------- GeriausiasAsmeninisRezultatas(zaidimai, VisiLolZaidejai, lolcount, VisiCsZaidejai, cscount); UniversalusZaidejai(zaidimai, VisiLolZaidejai, lolcount, VisiCsZaidejai, cscount); KomanduSarasas(zaidimai); }
/// <summary> /// Nuskaito duomenis is duomeny failo /// </summary> /// <param name="f1">pradinis duomenu failas</param> /// <param name="dvimatis">dvimatis objektas</param> /// <param name="visiDarbininkai">objektas</param> static void Skaityti(string f1, Konteinerine dvimatis, Konteinerine visiDarbininkai) { string line; using (StreamReader reader = new StreamReader(f1)) { line = reader.ReadLine(); string[] fd = line.Split(' '); dvimatis.darbSk = int.Parse(fd[0]); //stulpeliu sk - darbuot sk dvimatis.dienSk = int.Parse(fd[1]); //eiluciu sk = dienu sk dvimatis.detKaina = int.Parse(fd[2]); //detales kaina for (int i = 0; i < dvimatis.darbSk; i++) { line = reader.ReadLine(); string[] parts = line.Split(' '); string pavarde = parts[0]; string vardas = parts[1]; string bankas = parts[2]; string bankSask = parts[3]; Darbininkas darb = new Darbininkas(pavarde, vardas, bankas, bankSask); visiDarbininkai.DetiDarbInfo(darb); } for (int i = 0; i < dvimatis.dienSk; i++) { line = reader.ReadLine(); fd = line.Split(' '); for (int j = 0; j < dvimatis.darbSk; j++) { int detSk = int.Parse(fd[j]);///<detaliu skaicius> DetaliuKiekis detaliuSk = new DetaliuKiekis(detSk); dvimatis.DetiDetaliuInfo(i, j, detaliuSk); } } line = reader.ReadLine(); string[] far = line.Split(' '); dvimatis.dienuSk2 = int.Parse(far[0]); for (int i = 0; i < dvimatis.dienuSk2; i++) { line = reader.ReadLine(); fd = line.Split(' '); for (int j = 0; j < dvimatis.darbSk; j++) { int detSk2 = int.Parse(fd[j]); DetaliuKiekis detaliuSk2 = new DetaliuKiekis(detSk2); dvimatis.DetiDetaliuInfo2(i, j, detaliuSk2); } } } }
/// <summary> /// Suskaiciuoja kiekvieno darbuotojo atlyginima /// </summary> /// <param name="dvimatis">dvimatis objektas</param> /// <param name="visiDarbininkai">objektas</param> /// <param name="count">dienu skaicius</param> /// <param name="pirmas">jei primas menesis - true, jei antras false</param> static void Atlyginimas(Konteinerine dvimatis, Konteinerine visiDarbininkai, int count, bool pirmas) { for (int i = 0; i < dvimatis.darbSk; i++) { for (int j = 0; j < count; j++) { if (pirmas) { visiDarbininkai.darbininkoMasyvas[i].alga += dvimatis.Imti(j, i).detaliuSk *dvimatis.detKaina; } else { visiDarbininkai.darbininkoMasyvas[i].alga2 += dvimatis.Imti2(j, i).detaliuSk *dvimatis.detKaina; } } } }
/// <summary> /// Randa darbuotoja, kuriam maziausiai sekesi /// </summary> /// <param name="dvimatis">dvimatis objektas</param> /// <param name="visiDarbininkai">objektas</param> /// <param name="ind">indekstas, numeris eiles</param> /// <param name="pirmas">jei primas menesis - true, jei antras false</param> static void MaziausiaiSekesi(Konteinerine dvimatis, Konteinerine visiDarbininkai, out int ind, bool pirmas) { ind = 0; for (int j = 1; j < dvimatis.darbSk; j++) { if (pirmas) { if (visiDarbininkai.darbininkoMasyvas[ind].alga > visiDarbininkai.darbininkoMasyvas[j].alga) { ind = j; } } if ((!pirmas) && (visiDarbininkai.darbininkoMasyvas[ind].alga2 > visiDarbininkai.darbininkoMasyvas[j].alga2)) { ind = j; } } }
/// <summary> /// Suraso visus duomenis i rezultatu faila /// </summary> /// <param name="dvimatis">dvimatis objektas</param> /// <param name="visiDarbininkai">objektas</param> /// <param name="index">labiausiai nepasisekusio darbuotojo indeksas</param> /// <param name="diena">daugiausiai pelno atnesusi diena</param> /// <param name="f2">rezultatu failas</param> /// <param name="nr">menesio numeris</param> /// <param name="pirmas">jei primas menesis - true, jei antras false</param> static void SurasoIFaila(Konteinerine dvimatis, Konteinerine visiDarbininkai, int index, int diena, string f2, int nr, bool pirmas) { using (var writer = File.AppendText(f2)) { writer.WriteLine("--------------"); writer.WriteLine("| {0} MENESIS |", nr); writer.WriteLine("--------------"); writer.WriteLine(); writer.WriteLine("Kiekvieno darbininko atlyginimas:"); writer.WriteLine("----------------------------------------"); writer.WriteLine("Vardas | Pavarde | Alga"); writer.WriteLine("----------------------------------------"); if (pirmas) { for (int i = 0; i < dvimatis.darbSk; i++) { writer.WriteLine("{0,-10} | {1,-10} | {2,-5}", visiDarbininkai.darbininkoMasyvas[i].vardas, visiDarbininkai.darbininkoMasyvas[i].pavarde, visiDarbininkai.darbininkoMasyvas[i].alga); } } else { for (int i = 0; i < dvimatis.darbSk; i++) { writer.WriteLine("{0,-10} | {1,-10} | {2,-5}", visiDarbininkai.darbininkoMasyvas[i].vardas, visiDarbininkai.darbininkoMasyvas[i].pavarde, visiDarbininkai.darbininkoMasyvas[i].alga2); } } writer.WriteLine("----------------------------------------"); writer.WriteLine("Labiausiai nesiseke dirbti darbuotojui"); writer.WriteLine("vardu {0} {1} ", visiDarbininkai.darbininkoMasyvas[index].vardas, visiDarbininkai.darbininkoMasyvas[index].pavarde); writer.WriteLine("----------------------------------------"); writer.WriteLine("{0} diena buvo pagaminta daugiausiai detaliu", diena + 1); writer.WriteLine("----------------------------------------"); writer.WriteLine(); } }