Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
- namespace LaboratorinisDarbas_P6_
- {
- /** Klasė komandos duomenims saugoti
- @class Komanda */
- class Komanda
- {
- private string pavadinimas, // komandos pavadinimas
- miestas, // miestas, kurį atstovauja komanda
- pavarde, // komandos trenerio pavardė
- vardas; // komandos trenerio vardas
- private int taskai, // taškai, kuriuos pelnė komanda
- laimejimai, // komandos laimėtų varžybų skaičius
- lygiosios; // komandos lygiosiomis sužaistų varžybų skaičius
- /** Pradiniai komandos duomenys */
- public Komanda()
- {
- pavadinimas = "";
- miestas = "";
- pavarde = "";
- vardas = "";
- taskai = 0;
- laimejimai = 0;
- lygiosios = 0;
- }
- /** Komandos duomenų įrašymas
- @param pavadinimas - nauja pavadinimo reikšmė
- @param miestas - nauja miesto reikšmė
- @param pavarde - nauja pavardės reikšmė
- @param vardas - nauja vardo reikšmė
- @param taskai - nauja taškų reikšmė
- @param laimejimai - nauja laimėjimų reikšmė
- @param lygiosios - nauja lygiųjų reikšmė */
- public void Deti(string pavadinimas, string miestas, string pavarde,
- string vardas, int taskai, int laimejimai, int lygiosios)
- {
- this.pavadinimas = pavadinimas;
- this.miestas = miestas;
- this.pavarde = pavarde;
- this.vardas = vardas;
- this.taskai = taskai;
- this.laimejimai = laimejimai;
- this.lygiosios = lygiosios;
- }
- /** Įrašo lygiųjų skaičių */
- public void DetiLygiasias(int lyg) { lygiosios = lyg; }
- /** Grąžina lygiųjų skaičių */
- public int ImtiLygiasias() { return lygiosios; }
- /** Įrašo laimėjimų skaičių */
- public void DetiLaimejimus(int laim) {laimejimai = laim; }
- /** Grąžina laimėjimų skaičių */
- public int ImtiLaimejimus() { return laimejimai; }
- /** Įrašo komandos taškus */
- public void DetiTaskus(int task) { taskai = task; }
- /** Grąžina komandos taškus */
- public int ImtiTaskus() { return taskai; }
- /** Grąžina komandos pavadinimą */
- public string ImtiPav() { return pavadinimas; }
- // Spausdinimo metodas
- public override string ToString()
- {
- string eilute;
- eilute = string.Format("{0, -14} {1, -15} {2, -15} {3, -15}",
- pavadinimas, miestas, pavarde, vardas);
- return eilute;
- }
- /** Operatorius grąžina
- // true, jeigu pirmos komandos taškų kiekis yra didesnis už antros komandos taškų kiekį,
- // arba taškų kiekiai yra lygūs,
- // o pirmos komandos laimėjimų skaičius yra didesnis už antros komandos laimėjimų skaičių;
- // false - kitais atvejais. */
- public static bool operator >=(Komanda pirma, Komanda antra)
- {
- return pirma.taskai > antra.taskai ||
- pirma.taskai == antra.taskai && pirma.laimejimai > antra.laimejimai;
- }
- /** Operatorius grąžina
- // true, jeigu pirmos komandos taškų kiekis yra mažesnis už antros komandos taškų kiekį,
- // arba taškų kiekiai yra lygūs,
- // o pirmos komandos laimėjimų skaičius yra mažesnis už antros komandos laimėjimų skaičių;
- // false - kitais atvejais. */
- public static bool operator <=(Komanda pirma, Komanda antra)
- {
- return pirma.taskai < antra.taskai ||
- pirma.taskai == antra.taskai && pirma.laimejimai > antra.laimejimai;
- }
- }
- /** Klasė komandų duomenims saugoti
- @class Varžybos */
- class Varzybos
- {
- const int CMaxK = 100; // didžiausias galimas komandų skaičius
- private Komanda[] Komandos; // komandų duomenys
- public int n { get; set; } // komandų skaičius
- private int[,] Rezultatai; // I rato rezultatai
- public Varzybos()
- {
- n = 0;
- Komandos = new Komanda[CMaxK];
- Rezultatai = new int[CMaxK, CMaxK];
- }
- /** Grąžina nurodyto indekso komandos objektą
- @param nr - komandos indeksas */
- public Komanda Imti(int nr) { return Komandos[nr]; }
- /** Padeda į komandų objektų masyvą naują komandą ir
- // masyvo dydį padidina vienetu
- @param kom - komandos objektas */
- public void Deti(Komanda kom) { Komandos[n++] = kom; }
- /** Pakeičia rezultatų matricos elementą
- @param i - 1-os komandos numeris
- @param j - 2-os komandos numeris
- @param r - naujas įvarčių skaičius */
- public void DetiRez(int i, int j, int r) { Rezultatai[i, j] = r; }
- /** Grąžina rezultatų matricos elementą
- @param i - 1-os komandos numeris
- @param j - 2-os komandos numeris */
- public int ImtiRez(int i, int j) { return Rezultatai[i, j]; }
- /** Pakeičia komandų objektų masyvo komandą,
- // kurios numeris nr
- @param nr - keičiamos komandos numeris
- @param kom - komandų objekto masyvas */
- public void PakeistiKomanda(int nr, Komanda kom) { Komandos[nr] = kom; }
- /** Objektų masyvo papildymas komandos surinktais taškais,
- // laimėtų ir lygiųjų varžybų skaičiais */
- public void PapildytiKomanduDuomenis()
- {
- int skaicius;
- int kiekis;
- int suma;
- Komanda kom;
- for (int i = 0; i < n; i++)
- {
- skaicius = 0;
- kiekis = 0;
- suma = 0;
- for (int j = 0; j < n; j++)
- {
- if (ImtiRez(i, j) >= 0 &&
- ImtiRez(i, j) > ImtiRez(j, i))
- {
- suma = suma + 3;
- kiekis++;
- }
- if (ImtiRez(i, j) >= 0 &&
- ImtiRez(i, j) == ImtiRez(j, i))
- {
- suma = suma + 1;
- skaicius++;
- }
- }
- kom = Imti(i);
- kom.DetiTaskus(suma);
- kom.DetiLaimejimus(kiekis);
- kom.DetiLygiasias(skaicius);
- PakeistiKomanda(i, kom);
- }
- }
- /** Surikiuoja objektų masyvą pagal taškus ir
- // laimėtų varžybų kiekį. */
- public void RikiuotiMinMax()
- {
- Komanda kom;
- for (int i = 0; i < n - 1; i++)
- {
- int maxnr = i;
- for (int j = i + 1; j < n; j++)
- if (Imti(j) >= Imti(maxnr))
- maxnr = j;
- kom = Imti(i);
- // pakeitimai masyve Komandos
- PakeistiKomanda(i, Imti(maxnr));
- PakeistiKomanda(maxnr, kom);
- }
- }
- }
- class Program
- {
- /** Konstantos duomenų ir rezultatų failų vardams saugoti */
- const string CFd = "...\\...\\Duomenys.txt";
- const string CFr = "...\\...\\Rezultatai.txt";
- static void Main(string[] args)
- {
- Varzybos varzybos = new Varzybos(); // varžybose dalyvaujančių komandų duomenys
- Skaityti(CFd, ref varzybos);
- if (File.Exists(CFr))
- File.Delete(CFr);
- using (var fr = File.CreateText(CFr))
- {
- fr.WriteLine("PRADINIAI DUOMENYS");
- fr.WriteLine();
- }
- Spausdinti(CFr, varzybos, " Informacija apie futbolo komandas ");
- using (var fr = File.AppendText(CFr))
- {
- fr.WriteLine();
- fr.WriteLine("REZULTATAI");
- fr.WriteLine();
- }
- varzybos.PapildytiKomanduDuomenis();
- SpausdintiTurnyrineLentele(CFr, varzybos, "Turnyrinė lentelė");
- varzybos.RikiuotiMinMax();
- SpausdintiTurnyrineLentele(CFr, varzybos, "Turnyrinė lentelė (surikiuota)");
- int minPralaim;
- using (var fr = File.AppendText(CFr))
- {
- fr.WriteLine("Mažiausiai pralaimėjimų turi komanda {0}, pralaimėjimų skaičius {1}.",
- MazPralTurKom(varzybos, out minPralaim), minPralaim);
- }
- Console.WriteLine("Programa baigė darbą.");
- }
- /** Failo duomenis surašo į konteinerį,
- // įveda duomenis į dvimatį skaičių masyvą Rezultatai(n,n)
- @param fd - duomenų failo vardas
- @param varzybos - konteineris */
- static void Skaityti(string fd, ref Varzybos varzybos)
- {
- string pavadinimas,
- miestas,
- pavarde,
- vardas;
- int nn, ivarciai;
- string line;
- using (StreamReader reader = new StreamReader(fd))
- {
- line = reader.ReadLine();
- string[] parts;
- nn = int.Parse(line);
- for (int i = 0; i < nn; i++)
- {
- line = reader.ReadLine();
- parts = line.Split(';');
- pavadinimas = parts[0];
- miestas = parts[1];
- pavarde = parts[2];
- vardas = parts[3];
- Komanda kom;
- kom = new Komanda();
- kom.Deti(pavadinimas, miestas, pavarde, vardas, 0, 0, 0);
- varzybos.Deti(kom);
- }
- for (int i = 0; i < nn; i++)
- {
- line = reader.ReadLine();
- parts = line.Split(' ');
- for (int j = 0; j < nn; j++)
- {
- ivarciai = int.Parse(parts[j]);
- varzybos.DetiRez(i, j, ivarciai);
- }
- }
- }
- }
- /** Spausdina konteinerio duomenis ir
- // rezultatų matricą faile.
- @param fv - rezultatų failo vardas
- @param varzybos - komandos duomenų konteineris
- @param antraste - užrašas virš lentelės */
- static void Spausdinti(string fv, Varzybos varzybos, string antraste)
- {
- using (var fr = File.AppendText(fv))
- {
- int nr = 1;
- string bruksnys = new string('-', 60);
- fr.WriteLine(antraste);
- fr.WriteLine(bruksnys);
- fr.WriteLine("Nr. Pavadinimas Miestas Trenerio Trenerio ");
- fr.WriteLine(" pavardė vardas ");
- fr.WriteLine(bruksnys);
- for (int i = 0; i < varzybos.n; i++)
- fr.WriteLine("{0,2:d}. {1} ", i + 1, varzybos.Imti(i).ToString());
- fr.WriteLine(bruksnys);
- fr.WriteLine();
- fr.WriteLine("I rato rezultatų lentelė: ");
- fr.Write(" Nr.|");
- for (int j = 0; j < varzybos.n; j++)
- fr.Write("{0,3:d}", j + 1);
- fr.WriteLine();
- fr.WriteLine("----|-------------------------------");
- for (int i = 0; i < varzybos.n; i++)
- {
- fr.Write("{0,3:d} |", nr);
- for (int j = 0; j < varzybos.n; j++)
- fr.Write("{0,3:d}", varzybos.ImtiRez(i, j));
- fr.WriteLine();
- nr++;
- }
- }
- }
- /** Spausdina turnyrinę lentelę faile.
- @param fv - rezultatų failo vardas
- @param varzybos - komandos duomenų konteineris
- @param antraste - užrašas virš lentelės */
- static void SpausdintiTurnyrineLentele(string fv, Varzybos varzybos, string antraste)
- {
- using (var fr = File.AppendText(fv))
- {
- string bruksnys = new string('-', 41);
- fr.WriteLine(antraste);
- fr.WriteLine(bruksnys);
- fr.WriteLine(" Pavadinimas Laimėta Lygiosios Taškai ");
- fr.WriteLine(bruksnys);
- for (int i = 0; i < varzybos.n; i++)
- fr.WriteLine(" {0, -12} {1,4:d} {2,4:d} {3,4:d}",
- varzybos.Imti(i).ImtiPav(), varzybos.Imti(i).ImtiLaimejimus(),
- varzybos.Imti(i).ImtiLygiasias(), varzybos.Imti(i).ImtiTaskus());
- fr.WriteLine(bruksnys);
- fr.WriteLine();
- }
- }
- /** Suranda ir grąžina mažiausiai pralaimėjimų turinčios komandos pavadinimą.
- @param varzybos - objekto vardas
- @param min - pralaimėtų varžybų kiekis */
- static string MazPralTurKom(Varzybos varzybos, out int min)
- {
- string pav = "";
- min = 100;
- for (int i = 0; i < varzybos.n; i++)
- {
- int x = varzybos.n - 1 - varzybos.Imti(i).ImtiLaimejimus() - varzybos.Imti(i).ImtiLygiasias();
- if (x < min)
- {
- min = x;
- pav = varzybos.Imti(i).ImtiPav();
- }
- }
- return pav;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement