Advertisement
Guest User

Untitled

a guest
Oct 17th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.58 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace L2_17
  9. {
  10.     class Fonoteka
  11.     {
  12.  
  13.         private string pavadinimas;
  14.         private string autorius;
  15.         private double grojimoTrukme;
  16.         private double failoDydis;
  17.  
  18.         /// <summary>
  19.         /// Fonotekos konstruktorius
  20.         /// </summary>
  21.         /// <param name="pavadinimas">Dainos pavadinimas</param>
  22.         /// <param name="autorius">Dainos autorius</param>
  23.         /// <param name="grojimoTrukme">Dainos grojimo trukmė</param>
  24.         /// <param name="failoDydis">Dainos failo dydis</param>
  25.         public Fonoteka(string pavadinimas, string autorius,
  26.         double grojimoTrukme, double failoDydis)
  27.         {
  28.             this.pavadinimas = pavadinimas;
  29.             this.autorius = autorius;
  30.             this.grojimoTrukme = grojimoTrukme;
  31.             this.failoDydis = failoDydis;
  32.  
  33.         }
  34.  
  35.         // Duomenų paėmimo metodai
  36.         public string ImtiPavadinima() { return pavadinimas; }
  37.         public string ImtiAutoriu() { return autorius; }
  38.         public double ImtiGroTrukme() { return grojimoTrukme; }
  39.         public double ImtiFailoDydi() { return failoDydis; }
  40.  
  41.     }
  42.     class Program
  43.     {
  44.         const string CDf1 = "..//..//Duomenys1.txt";
  45.         const string CDf2 = "..//..//Duomenys2.txt";
  46.         const string CFr = "Rezultatai.txt";
  47.         const int Cn = 100;
  48.  
  49.         static void Main(string[] args)
  50.         {
  51.             Fonoteka[] F1 = new Fonoteka[Cn];
  52.             Fonoteka[] F2 = new Fonoteka[Cn];
  53.             Fonoteka[] F = new Fonoteka[Cn];
  54.  
  55.             string savininkas1;
  56.             string savininkas2;
  57.  
  58.             int kiek1;
  59.             int kiek2;
  60.             int nr = 0;
  61.             double nFiltras;
  62.  
  63.             double trukme1;
  64.             double trukme2;
  65.  
  66.             double failas1;
  67.             double failas2;
  68.  
  69.             if (File.Exists(CFr))
  70.                 File.Delete(CFr);
  71.  
  72.  
  73.             //Duomenų skaitymas
  74.             Skaityti(CDf1, F1, out kiek1, out savininkas1);
  75.             Skaityti(CDf2, F2, out kiek2, out savininkas2);
  76.  
  77.             //Grojimo trukmės filtro įvedimas
  78.             Console.WriteLine("Iveskite laiko limitą");
  79.             nFiltras = double.Parse(Console.ReadLine());
  80.  
  81.             //Dainų trukmės radimas
  82.             trukme1 = Laikas(F1, kiek1);
  83.             trukme2 = Laikas(F2, kiek2);
  84.  
  85.             //Didžiausio failo rinkinyje radimas
  86.             failas1 = DidFailas(F1,kiek1);
  87.             failas2 = DidFailas(F2, kiek2);
  88.  
  89.             //Naujo rinkinio formavimas
  90.             Formuoti(F1, kiek1, F, ref nr, nFiltras);
  91.             Formuoti(F2, kiek2, F, ref nr, nFiltras);
  92.  
  93.             //Duomenų spausdinimas
  94.             Spausdinti(CFr, F1, kiek1, savininkas1 + " dainų rinkinys");
  95.             Spausdinti(CFr, F1, kiek1, savininkas2 + " dainų rinkinys");
  96.  
  97.             if (nr != 0) {
  98.  
  99.                 Spausdinti(CFr, F, nr, "Dainos, kurios neviršija laiko limito");
  100.  
  101.             }
  102.             else
  103.             {
  104.                 using (var fr = File.AppendText(CFr))
  105.                 {
  106.                     fr.WriteLine("Jokia daina neviršija laiko limito");
  107.                 }
  108.             }
  109.  
  110.             if (failas1 > failas2)
  111.             {
  112.                 using (var fr = File.AppendText(CFr))
  113.                 {
  114.                 fr.WriteLine("{0} turi didžiausios apimties kūrinio failą.",
  115.                     savininkas1);
  116.                 }
  117.             }
  118.             if (failas1 == failas2)
  119.             {
  120.                 using (var fr = File.AppendText(CFr))
  121.                 {
  122.                     fr.WriteLine("Abu savininkai turi didžiausios apimties" +
  123.                     " kūrinio failą.");
  124.                 }
  125.             }
  126.             if (failas1 < failas2)
  127.             {
  128.                 using (var fr = File.AppendText(CFr))
  129.                 {
  130.                     fr.WriteLine("{0} turi didžiausios apimties kūrinio failą.",
  131.                         savininkas2);
  132.                 }
  133.             }
  134.             if (trukme1 > trukme2)
  135.             {
  136.                 using (var fr = File.AppendText(CFr))
  137.                 {
  138.                     fr.WriteLine("{0} gali ilgiau klausysis savo kūrinių",
  139.                         savininkas1);
  140.  
  141.                 }
  142.             }
  143.             if (trukme1 < trukme2)
  144.             {
  145.                 using (var fr = File.AppendText(CFr))
  146.                 {
  147.                     fr.WriteLine("{0} gali ilgiau klausysis savo kūrinių",
  148.                         savininkas2);
  149.  
  150.                 }
  151.             }
  152.             if (trukme1 == trukme2)
  153.             {
  154.                 using (var fr = File.AppendText(CFr))
  155.                 {
  156.                     fr.WriteLine("Abu savininkai klausysis savo kūrinių" +
  157.                     " vienodai laiko");
  158.  
  159.                 }
  160.             }
  161.  
  162.         }
  163.         /// <summary>
  164.         /// Duomenų skaitymo metodas
  165.         /// </summary>
  166.         /// <param name="fv">Duomenų failas</param>
  167.         /// <param name="F">Dainų rinkinys</param>
  168.         /// <param name="kiek">Elementų kiekis</param>
  169.         /// <param name="savininkas">Rinkinio savininkas</param>
  170.         static void Skaityti(string fv, Fonoteka[] F, out int kiek,
  171.         out string savininkas)
  172.         {
  173.  
  174.             using (StreamReader reader = new StreamReader(fv))
  175.             {
  176.                 string line;
  177.                 string[] parts;
  178.                 kiek = 0;
  179.  
  180.                 string pavadinimas;
  181.                 string autorius;
  182.                 double trukme;//minutemis
  183.                 double failoDydis;
  184.  
  185.                 line = reader.ReadLine();
  186.                 savininkas = line;
  187.  
  188.                 while ((line = reader.ReadLine()) != null && (kiek <= Cn))
  189.                 {
  190.                     parts = line.Split(';');
  191.  
  192.                     pavadinimas = parts[1];
  193.                     autorius = parts[0];
  194.                     trukme = double.Parse(parts[2]);
  195.                     failoDydis = double.Parse(parts[3]);
  196.  
  197.                     F[kiek++] = new Fonoteka(pavadinimas, autorius, trukme,
  198.                     failoDydis);
  199.  
  200.                 }
  201.             }
  202.         }
  203.         /// <summary>
  204.         /// Duomenų spausdinimo metodas
  205.         /// </summary>
  206.         /// <param name="rf">Rezultatų failo pavadinimas</param>
  207.         /// <param name="F">Dainų rinkinys</param>
  208.         /// <param name="kiek">Elementų kiekis</param>
  209.         /// <param name="savininkas">Savininko vardas ir pavardė</param>
  210.         static void Spausdinti(string rf, Fonoteka[] F, int kiek,
  211.         string savininkas)
  212.         {
  213.  
  214.         const string virsus =
  215.          "|-----------------|------------------|---------------|---------|\r\n"
  216.        + "|   Pavadinimas   |      Autorius    |    Grojimo    |  Failo  | \r\n"
  217.        + "|                 |                  |     trukmė    |  dydis  | \r\n"
  218.        + "|-----------------|------------------|---------------|---------|";
  219.  
  220.             using (var fr = File.AppendText(rf))
  221.             {
  222.  
  223.                 fr.WriteLine("Pavadinimas: {0}", savininkas);
  224.                 fr.WriteLine(virsus);
  225.  
  226.                 for (int i = 0; i < kiek; i++)
  227.                 {
  228.                     fr.WriteLine("| {0,-15} | {1,-16} | {2,13:f2} | {3,7:f2} |",
  229.                     F[i].ImtiPavadinima(), F[i].ImtiAutoriu(), F[i].ImtiGroTrukme(),
  230.                     F[i].ImtiFailoDydi());
  231.  
  232.                 }
  233.  
  234.                 fr.WriteLine("------------------------------------------------------" +
  235.                 "----------");
  236.                 fr.WriteLine("");
  237.  
  238.             }
  239.  
  240.         }
  241.         /// <summary>
  242.         /// Ilgiausio grojimo laiko radimo metodas
  243.         /// </summary>
  244.         /// <param name="f">Dainų rinkinys</param>
  245.         /// <param name="kiek">Elementų kiekis</param>
  246.         /// <returns></returns>
  247.         static double Laikas(Fonoteka[] F, int kiek)
  248.         {
  249.  
  250.             double laikas = 0;
  251.  
  252.             for (int i = 0; i < kiek; i++)
  253.             {
  254.  
  255.                 laikas = laikas + F[i].ImtiGroTrukme();
  256.  
  257.             }
  258.  
  259.             return laikas;
  260.         }
  261.         /// <summary>
  262.         /// Naujo rinkinio formavimo metodas
  263.         /// </summary>
  264.         /// <param name="F1">Senas dainų rinkinys</param>
  265.         /// <param name="n">Seno rinkinio elementų kiekis</param>
  266.         /// <param name="F">Naujas rinkinys</param>
  267.         /// <param name="nr">Naujas elementų kiekis</param>
  268.         /// <param name="nFiltras">Grojimo trukmės filtras</param>
  269.         static void Formuoti(Fonoteka[] F1, int n, Fonoteka[] F, ref int nr,
  270.         double nFiltras)
  271.         {
  272.  
  273.             for (int i = 0; i < n; i++)
  274.             {
  275.                 if (F1[i].ImtiGroTrukme() <= nFiltras)
  276.                 {
  277.                     F[nr] = F1[i];
  278.                     nr++;
  279.                 }
  280.             }
  281.  
  282.         }
  283.         /// <summary>
  284.         /// Didžiausio failo radimo metodas
  285.         /// </summary>
  286.         /// <param name="F">Dainų rinkinys</param>
  287.         /// <param name="kiek">elementų kiekis</param>
  288.         /// <returns></returns>
  289.         static double DidFailas(Fonoteka[] F, int kiek)
  290.         {
  291.  
  292.             double failas = F[0].ImtiFailoDydi();
  293.  
  294.             for (int i = 0; i < kiek; i++)
  295.             {
  296.  
  297.                 if (failas < F[i].ImtiFailoDydi())
  298.                 {
  299.                     failas = F[i].ImtiFailoDydi();
  300.                 }
  301.  
  302.             }
  303.  
  304.             return failas;
  305.  
  306.         }
  307.     }
  308. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement