Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace L2_17
- {
- class Fonoteka
- {
- private string pavadinimas;
- private string autorius;
- private double grojimoTrukme;
- private double failoDydis;
- /// <summary>
- /// Fonotekos konstruktorius
- /// </summary>
- /// <param name="pavadinimas">Dainos pavadinimas</param>
- /// <param name="autorius">Dainos autorius</param>
- /// <param name="grojimoTrukme">Dainos grojimo trukmė</param>
- /// <param name="failoDydis">Dainos failo dydis</param>
- public Fonoteka(string pavadinimas, string autorius,
- double grojimoTrukme, double failoDydis)
- {
- this.pavadinimas = pavadinimas;
- this.autorius = autorius;
- this.grojimoTrukme = grojimoTrukme;
- this.failoDydis = failoDydis;
- }
- // Duomenų paėmimo metodai
- public string ImtiPavadinima() { return pavadinimas; }
- public string ImtiAutoriu() { return autorius; }
- public double ImtiGroTrukme() { return grojimoTrukme; }
- public double ImtiFailoDydi() { return failoDydis; }
- }
- class Program
- {
- const string CDf1 = "..//..//Duomenys1.txt";
- const string CDf2 = "..//..//Duomenys2.txt";
- const string CFr = "Rezultatai.txt";
- const int Cn = 100;
- static void Main(string[] args)
- {
- Fonoteka[] F1 = new Fonoteka[Cn];
- Fonoteka[] F2 = new Fonoteka[Cn];
- Fonoteka[] F = new Fonoteka[Cn];
- string savininkas1;
- string savininkas2;
- int kiek1;
- int kiek2;
- int nr = 0;
- double nFiltras;
- double trukme1;
- double trukme2;
- double failas1;
- double failas2;
- if (File.Exists(CFr))
- File.Delete(CFr);
- //Duomenų skaitymas
- Skaityti(CDf1, F1, out kiek1, out savininkas1);
- Skaityti(CDf2, F2, out kiek2, out savininkas2);
- //Grojimo trukmės filtro įvedimas
- Console.WriteLine("Iveskite laiko limitą");
- nFiltras = double.Parse(Console.ReadLine());
- //Dainų trukmės radimas
- trukme1 = Laikas(F1, kiek1);
- trukme2 = Laikas(F2, kiek2);
- //Didžiausio failo rinkinyje radimas
- failas1 = DidFailas(F1,kiek1);
- failas2 = DidFailas(F2, kiek2);
- //Naujo rinkinio formavimas
- Formuoti(F1, kiek1, F, ref nr, nFiltras);
- Formuoti(F2, kiek2, F, ref nr, nFiltras);
- //Duomenų spausdinimas
- Spausdinti(CFr, F1, kiek1, savininkas1 + " dainų rinkinys");
- Spausdinti(CFr, F1, kiek1, savininkas2 + " dainų rinkinys");
- if (nr != 0) {
- Spausdinti(CFr, F, nr, "Dainos, kurios neviršija laiko limito");
- }
- else
- {
- using (var fr = File.AppendText(CFr))
- {
- fr.WriteLine("Jokia daina neviršija laiko limito");
- }
- }
- if (failas1 > failas2)
- {
- using (var fr = File.AppendText(CFr))
- {
- fr.WriteLine("{0} turi didžiausios apimties kūrinio failą.",
- savininkas1);
- }
- }
- if (failas1 == failas2)
- {
- using (var fr = File.AppendText(CFr))
- {
- fr.WriteLine("Abu savininkai turi didžiausios apimties" +
- " kūrinio failą.");
- }
- }
- if (failas1 < failas2)
- {
- using (var fr = File.AppendText(CFr))
- {
- fr.WriteLine("{0} turi didžiausios apimties kūrinio failą.",
- savininkas2);
- }
- }
- if (trukme1 > trukme2)
- {
- using (var fr = File.AppendText(CFr))
- {
- fr.WriteLine("{0} gali ilgiau klausysis savo kūrinių",
- savininkas1);
- }
- }
- if (trukme1 < trukme2)
- {
- using (var fr = File.AppendText(CFr))
- {
- fr.WriteLine("{0} gali ilgiau klausysis savo kūrinių",
- savininkas2);
- }
- }
- if (trukme1 == trukme2)
- {
- using (var fr = File.AppendText(CFr))
- {
- fr.WriteLine("Abu savininkai klausysis savo kūrinių" +
- " vienodai laiko");
- }
- }
- }
- /// <summary>
- /// Duomenų skaitymo metodas
- /// </summary>
- /// <param name="fv">Duomenų failas</param>
- /// <param name="F">Dainų rinkinys</param>
- /// <param name="kiek">Elementų kiekis</param>
- /// <param name="savininkas">Rinkinio savininkas</param>
- static void Skaityti(string fv, Fonoteka[] F, out int kiek,
- out string savininkas)
- {
- using (StreamReader reader = new StreamReader(fv))
- {
- string line;
- string[] parts;
- kiek = 0;
- string pavadinimas;
- string autorius;
- double trukme;//minutemis
- double failoDydis;
- line = reader.ReadLine();
- savininkas = line;
- while ((line = reader.ReadLine()) != null && (kiek <= Cn))
- {
- parts = line.Split(';');
- pavadinimas = parts[1];
- autorius = parts[0];
- trukme = double.Parse(parts[2]);
- failoDydis = double.Parse(parts[3]);
- F[kiek++] = new Fonoteka(pavadinimas, autorius, trukme,
- failoDydis);
- }
- }
- }
- /// <summary>
- /// Duomenų spausdinimo metodas
- /// </summary>
- /// <param name="rf">Rezultatų failo pavadinimas</param>
- /// <param name="F">Dainų rinkinys</param>
- /// <param name="kiek">Elementų kiekis</param>
- /// <param name="savininkas">Savininko vardas ir pavardė</param>
- static void Spausdinti(string rf, Fonoteka[] F, int kiek,
- string savininkas)
- {
- const string virsus =
- "|-----------------|------------------|---------------|---------|\r\n"
- + "| Pavadinimas | Autorius | Grojimo | Failo | \r\n"
- + "| | | trukmė | dydis | \r\n"
- + "|-----------------|------------------|---------------|---------|";
- using (var fr = File.AppendText(rf))
- {
- fr.WriteLine("Pavadinimas: {0}", savininkas);
- fr.WriteLine(virsus);
- for (int i = 0; i < kiek; i++)
- {
- fr.WriteLine("| {0,-15} | {1,-16} | {2,13:f2} | {3,7:f2} |",
- F[i].ImtiPavadinima(), F[i].ImtiAutoriu(), F[i].ImtiGroTrukme(),
- F[i].ImtiFailoDydi());
- }
- fr.WriteLine("------------------------------------------------------" +
- "----------");
- fr.WriteLine("");
- }
- }
- /// <summary>
- /// Ilgiausio grojimo laiko radimo metodas
- /// </summary>
- /// <param name="f">Dainų rinkinys</param>
- /// <param name="kiek">Elementų kiekis</param>
- /// <returns></returns>
- static double Laikas(Fonoteka[] F, int kiek)
- {
- double laikas = 0;
- for (int i = 0; i < kiek; i++)
- {
- laikas = laikas + F[i].ImtiGroTrukme();
- }
- return laikas;
- }
- /// <summary>
- /// Naujo rinkinio formavimo metodas
- /// </summary>
- /// <param name="F1">Senas dainų rinkinys</param>
- /// <param name="n">Seno rinkinio elementų kiekis</param>
- /// <param name="F">Naujas rinkinys</param>
- /// <param name="nr">Naujas elementų kiekis</param>
- /// <param name="nFiltras">Grojimo trukmės filtras</param>
- static void Formuoti(Fonoteka[] F1, int n, Fonoteka[] F, ref int nr,
- double nFiltras)
- {
- for (int i = 0; i < n; i++)
- {
- if (F1[i].ImtiGroTrukme() <= nFiltras)
- {
- F[nr] = F1[i];
- nr++;
- }
- }
- }
- /// <summary>
- /// Didžiausio failo radimo metodas
- /// </summary>
- /// <param name="F">Dainų rinkinys</param>
- /// <param name="kiek">elementų kiekis</param>
- /// <returns></returns>
- static double DidFailas(Fonoteka[] F, int kiek)
- {
- double failas = F[0].ImtiFailoDydi();
- for (int i = 0; i < kiek; i++)
- {
- if (failas < F[i].ImtiFailoDydi())
- {
- failas = F[i].ImtiFailoDydi();
- }
- }
- return failas;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement