Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Kasparavičius Martynas, IFF-6/1, KD 2, P175B502
- using System;
- using System.IO;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace K2_pvz
- {
- class Program
- {
- static Modeliai<Auto> A = new Modeliai<Auto>(); // pradiniai duomenys
- static Modeliai<Auto> B = new Modeliai<Auto>(); // atrinkti automobiliai
- static string duomenuFailas = @"..\..\Duomenys.txt";
- static string rezultatuFailas = @"..\..\Rezultatai.txt";
- static void Main(string[] args)
- {
- DuomenuNuskaitymas(duomenuFailas, A);
- KainosSkirtumai(A, B);
- RezultatuSpausdinimas(rezultatuFailas, A, B);
- }
- private static void DuomenuNuskaitymas(string failas, Modeliai<Auto> a)
- {
- string[] eilutes = File.ReadAllLines(failas);
- foreach(string eilute in eilutes)
- {
- string[] dalys = eilute.Split(',');
- var auto = new Auto(dalys[0], dalys[1], int.Parse(dalys[2]));
- a.PridetiDuomenis(auto);
- }
- }
- private static void KainosSkirtumai(Modeliai<Auto> a, Modeliai<Auto> b)
- {
- int dKaina = BrangiausioKaina(a); // didžiausia kaina
- int gKaina = (dKaina * 75) / 100; // mažiausia galima kaina
- for(a.Pradzia(); a.Yra(); a.Desinen())
- {
- if(a.GautiDuomenis().GautiKaina() >= gKaina)
- {
- b.PridetiDuomenis(a.GautiDuomenis());
- }
- }
- }
- /// <summary>
- /// Brangiausio automobilio kainos radimas
- /// </summary>
- /// <returns>didžiausia kaina</returns>
- private static int BrangiausioKaina(Modeliai<Auto> a)
- {
- int kaina = 0;
- for (a.Pradzia(); a.Yra(); a.Desinen())
- {
- if (a.GautiDuomenis().GautiKaina() > kaina)
- {
- kaina = a.GautiDuomenis().GautiKaina();
- }
- }
- return kaina;
- }
- private static void RezultatuSpausdinimas(string failas, Modeliai<Auto> a, Modeliai<Auto> b)
- {
- using (var writer = new StreamWriter(failas))
- {
- writer.WriteLine("Pradiniai duomenys:");
- SpausdintiDuomenis(writer, a);
- writer.WriteLine("Nesurikiuoti rezultatai:");
- SpausdintiDuomenis(writer, b);
- b.RikiuotiI();
- writer.WriteLine("Surikiuoti rezultatai:");
- SpausdintiDuomenis(writer, b);
- }
- }
- private static void SpausdintiDuomenis(StreamWriter writer, Modeliai<Auto> a)
- {
- writer.WriteLine("-------------------------------------------");
- writer.WriteLine("| {0, -15} | {1, -10} | {2, -10} |", "Gamintojas", "Modelis", "Kaina");
- writer.WriteLine("-------------------------------------------");
- for (a.Pradzia(); a.Yra(); a.Desinen())
- {
- writer.WriteLine("| {0, -15} | {1, -10} | {2, -10} |", a.GautiDuomenis().GautiGamintoja(), a.GautiDuomenis().GautiModeli(), a.GautiDuomenis().GautiKaina());
- writer.WriteLine("-------------------------------------------");
- }
- writer.WriteLine();
- }
- }
- public sealed class Auto : IComparable<Auto>
- {
- private string Gamintojas { get; set; } // automobilio gamintojas
- private string Modelis { get; set; } // automobilio modelis
- private int Kaina { get; set; } // automobolio kaina
- public Auto() { }
- public Auto(string gamintojas, string modelis, int kaina)
- {
- Gamintojas = gamintojas;
- Modelis = modelis;
- Kaina = kaina;
- }
- public string GautiGamintoja()
- {
- return Gamintojas;
- }
- public string GautiModeli()
- {
- return Modelis;
- }
- public int GautiKaina()
- {
- return Kaina;
- }
- public int CompareTo(Auto kitas)
- {
- if (kitas == null) return 1;
- if (Kaina.CompareTo(kitas.Kaina) != 0)
- return Kaina.CompareTo(kitas.Kaina);
- else
- return Modelis.CompareTo(kitas.Modelis);
- }
- }
- public sealed class Modeliai<tipas> where tipas : IComparable<tipas>
- {
- private Mazgas<tipas> pr;
- private Mazgas<tipas> pb;
- private Mazgas<tipas> d;
- public Modeliai()
- {
- pr = null;
- pb = null;
- }
- public void DetiDuomenis(tipas data)
- {
- Mazgas<tipas> Duom = new Mazgas<tipas>(data, pb, null);
- if(pr != null)
- {
- pb.Desine = Duom;
- }
- else
- {
- pr = Duom;
- }
- pb = Duom;
- }
- public void Pradzia()
- {
- d = pr;
- }
- public void Pabaiga()
- {
- d = pb;
- }
- public bool Yra()
- {
- return d != null;
- }
- public void Desinen()
- {
- d = d.Desine;
- }
- public void Kairen()
- {
- d = d.Kaire;
- }
- public tipas GautiDuomenis()
- {
- return d.Duomenys;
- }
- public void RikiuotiI()
- {
- for (Mazgas<tipas> d1 = pr; d1 != null; d1 = d1.Desine)
- {
- Mazgas<tipas> maxv = d1;
- for (Mazgas<tipas> d2 = d1; d2 != null; d2 = d2.Desine)
- {
- if (d2.Duomenys.CompareTo(maxv.Duomenys) > 0)
- {
- maxv = d2;
- }
- }
- tipas Data = d1.Duomenys;
- d1.Duomenys = maxv.Duomenys;
- maxv.Duomenys = Data;
- }
- }
- public void RikiuotiB()
- {
- if (pr == null) { return; }
- bool keista = true;
- while(keista)
- {
- keista = false;
- var pra = pr;
- while(pra.Desine != null)
- {
- if(pra.Duomenys.CompareTo(pra.Desine.Duomenys) < 0)
- {
- tipas Data = pra.Duomenys;
- pra.Duomenys = pra.Desine.Duomenys;
- pra.Desine.Duomenys = Data;
- keista = false;
- }
- }
- pra = pra.Desine;
- }
- }
- }
- public sealed class Mazgas<tipas> where tipas : IComparable<tipas>
- {
- public tipas Duomenys { get; set; }
- public Mazgas<tipas> Kaire { get; set; }
- public Mazgas<tipas> Desine { get; set; }
- public Mazgas(tipas duom, Mazgas<tipas> adrk, Mazgas<tipas> adrd)
- {
- Duomenys = duom;
- Kaire = adrk;
- Desine = adrd;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement