Advertisement
MartisK

KD2

May 25th, 2017
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.28 KB | None | 0 0
  1. // Kasparavičius Martynas, IFF-6/1, KD 2, P175B502
  2.  
  3. using System;
  4. using System.IO;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9.  
  10. namespace K2_pvz
  11. {
  12.     class Program
  13.     {
  14.         static Modeliai<Auto> A = new Modeliai<Auto>(); // pradiniai duomenys
  15.         static Modeliai<Auto> B = new Modeliai<Auto>(); // atrinkti automobiliai
  16.  
  17.         static string duomenuFailas = @"..\..\Duomenys.txt";
  18.         static string rezultatuFailas = @"..\..\Rezultatai.txt";
  19.  
  20.         static void Main(string[] args)
  21.         {
  22.             DuomenuNuskaitymas(duomenuFailas, A);
  23.             KainosSkirtumai(A, B);
  24.             RezultatuSpausdinimas(rezultatuFailas, A, B);
  25.         }
  26.  
  27.         private static void DuomenuNuskaitymas(string failas, Modeliai<Auto> a)
  28.         {
  29.             string[] eilutes = File.ReadAllLines(failas);
  30.  
  31.             foreach(string eilute in eilutes)
  32.             {
  33.                 string[] dalys = eilute.Split(',');
  34.  
  35.                 var auto = new Auto(dalys[0], dalys[1], int.Parse(dalys[2]));
  36.                 a.PridetiDuomenis(auto);
  37.             }
  38.         }
  39.  
  40.         private static void KainosSkirtumai(Modeliai<Auto> a, Modeliai<Auto> b)
  41.         {
  42.             int dKaina = BrangiausioKaina(a); // didžiausia kaina
  43.             int gKaina = (dKaina * 75) / 100; // mažiausia galima kaina
  44.  
  45.             for(a.Pradzia(); a.Yra(); a.Desinen())
  46.             {
  47.                 if(a.GautiDuomenis().GautiKaina() >= gKaina)
  48.                 {
  49.                     b.PridetiDuomenis(a.GautiDuomenis());
  50.                 }
  51.             }
  52.         }
  53.  
  54.         /// <summary>
  55.         /// Brangiausio automobilio kainos radimas
  56.         /// </summary>
  57.         /// <returns>didžiausia kaina</returns>
  58.         private static int BrangiausioKaina(Modeliai<Auto> a)
  59.         {
  60.             int kaina = 0;
  61.  
  62.             for (a.Pradzia(); a.Yra(); a.Desinen())
  63.             {
  64.                 if (a.GautiDuomenis().GautiKaina() > kaina)
  65.                 {
  66.                     kaina = a.GautiDuomenis().GautiKaina();
  67.                 }
  68.             }
  69.  
  70.             return kaina;
  71.         }
  72.  
  73.         private static void RezultatuSpausdinimas(string failas, Modeliai<Auto> a, Modeliai<Auto> b)
  74.         {
  75.             using (var writer = new StreamWriter(failas))
  76.             {
  77.                 writer.WriteLine("Pradiniai duomenys:");
  78.                 SpausdintiDuomenis(writer, a);
  79.  
  80.                 writer.WriteLine("Nesurikiuoti rezultatai:");
  81.                 SpausdintiDuomenis(writer, b);
  82.  
  83.                 b.RikiuotiI();
  84.                 writer.WriteLine("Surikiuoti rezultatai:");
  85.                 SpausdintiDuomenis(writer, b);
  86.             }
  87.         }
  88.  
  89.         private static void SpausdintiDuomenis(StreamWriter writer, Modeliai<Auto> a)
  90.         {
  91.             writer.WriteLine("-------------------------------------------");
  92.             writer.WriteLine("| {0, -15} | {1, -10} | {2, -10} |", "Gamintojas", "Modelis", "Kaina");
  93.             writer.WriteLine("-------------------------------------------");
  94.  
  95.             for (a.Pradzia(); a.Yra(); a.Desinen())
  96.             {
  97.                 writer.WriteLine("| {0, -15} | {1, -10} | {2, -10} |", a.GautiDuomenis().GautiGamintoja(), a.GautiDuomenis().GautiModeli(), a.GautiDuomenis().GautiKaina());
  98.                 writer.WriteLine("-------------------------------------------");
  99.             }
  100.  
  101.             writer.WriteLine();
  102.         }
  103.     }
  104.  
  105.     public sealed class Auto : IComparable<Auto>
  106.     {
  107.         private string Gamintojas { get; set; } // automobilio gamintojas
  108.         private string Modelis { get; set; } // automobilio modelis
  109.         private int Kaina { get; set; } // automobolio kaina
  110.  
  111.         public Auto() { }
  112.  
  113.         public Auto(string gamintojas, string modelis, int kaina)
  114.         {
  115.             Gamintojas = gamintojas;
  116.             Modelis = modelis;
  117.             Kaina = kaina;
  118.         }
  119.  
  120.         public string GautiGamintoja()
  121.         {
  122.             return Gamintojas;
  123.         }
  124.  
  125.         public string GautiModeli()
  126.         {
  127.             return Modelis;
  128.         }
  129.  
  130.         public int GautiKaina()
  131.         {
  132.             return Kaina;
  133.         }
  134.  
  135.         public int CompareTo(Auto kitas)
  136.         {
  137.             if (kitas == null) return 1;
  138.             if (Kaina.CompareTo(kitas.Kaina) != 0)
  139.                 return Kaina.CompareTo(kitas.Kaina);
  140.             else
  141.                 return Modelis.CompareTo(kitas.Modelis);
  142.         }
  143.     }
  144.  
  145.     public sealed class Modeliai<tipas> where tipas : IComparable<tipas>
  146.     {
  147.         private Mazgas<tipas> pr;
  148.         private Mazgas<tipas> pb;
  149.         private Mazgas<tipas> d;
  150.  
  151.         public Modeliai()
  152.         {
  153.             pr = null;
  154.             pb = null;
  155.         }
  156.  
  157.         public void DetiDuomenis(tipas data)
  158.         {
  159.             Mazgas<tipas> Duom = new Mazgas<tipas>(data, pb, null);
  160.  
  161.             if(pr != null)
  162.             {
  163.                 pb.Desine = Duom;
  164.             }
  165.             else
  166.             {
  167.                 pr = Duom;
  168.             }
  169.             pb = Duom;
  170.         }
  171.  
  172.         public void Pradzia()
  173.         {
  174.             d = pr;
  175.         }
  176.  
  177.         public void Pabaiga()
  178.         {
  179.             d = pb;
  180.         }
  181.  
  182.         public bool Yra()
  183.         {
  184.             return d != null;
  185.         }
  186.  
  187.         public void Desinen()
  188.         {
  189.             d = d.Desine;
  190.         }
  191.  
  192.         public void Kairen()
  193.         {
  194.             d = d.Kaire;
  195.         }
  196.  
  197.         public tipas GautiDuomenis()
  198.         {
  199.             return d.Duomenys;
  200.         }
  201.  
  202.         public void RikiuotiI()
  203.         {
  204.                 for (Mazgas<tipas> d1 = pr; d1 != null; d1 = d1.Desine)
  205.                 {
  206.                     Mazgas<tipas> maxv = d1;
  207.  
  208.                     for (Mazgas<tipas> d2 = d1; d2 != null; d2 = d2.Desine)
  209.                     {
  210.                         if (d2.Duomenys.CompareTo(maxv.Duomenys) > 0)
  211.                         {
  212.                             maxv = d2;
  213.                         }
  214.                     }
  215.  
  216.                     tipas Data = d1.Duomenys;
  217.                     d1.Duomenys = maxv.Duomenys;
  218.                     maxv.Duomenys = Data;
  219.             }
  220.         }
  221.  
  222.         public void RikiuotiB()
  223.         {
  224.             if (pr == null) { return; }
  225.  
  226.             bool keista = true;
  227.  
  228.             while(keista)
  229.             {
  230.                 keista = false;
  231.  
  232.                 var pra = pr;
  233.  
  234.                 while(pra.Desine != null)
  235.                 {
  236.                     if(pra.Duomenys.CompareTo(pra.Desine.Duomenys) < 0)
  237.                     {
  238.                         tipas Data = pra.Duomenys;
  239.                         pra.Duomenys = pra.Desine.Duomenys;
  240.                         pra.Desine.Duomenys = Data;
  241.                         keista = false;
  242.                     }
  243.                 }
  244.  
  245.                 pra = pra.Desine;
  246.             }
  247.         }
  248.     }
  249.  
  250.     public sealed class Mazgas<tipas> where tipas : IComparable<tipas>
  251.     {
  252.         public tipas Duomenys { get; set; }
  253.         public Mazgas<tipas> Kaire { get; set; }
  254.         public Mazgas<tipas> Desine { get; set; }
  255.  
  256.         public Mazgas(tipas duom, Mazgas<tipas> adrk, Mazgas<tipas> adrd)
  257.         {
  258.             Duomenys = duom;
  259.             Kaire = adrk;
  260.             Desine = adrd;
  261.         }
  262.     }
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement