Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApp1
- {
- class Auto : IComparable<Auto>
- {
- public string Gamintojas { get; set; }
- public string Modelis { get; set; }
- public decimal Kaina { get; set; }
- public Auto(string gamintojas, string modelis, decimal kaina)
- {
- Gamintojas = gamintojas;
- Modelis = modelis;
- Kaina = kaina;
- }
- public int CompareTo(Auto kitas)
- {
- if (kitas is null)
- {
- return 1;
- }
- if (Kaina.Equals(kitas.Kaina))
- {
- return Modelis.CompareTo(kitas.Modelis);
- }
- return kitas.Kaina.CompareTo(Kaina);
- }
- public override string ToString()
- {
- return string.Format($"|{Gamintojas,-15}|{Modelis,-15}|{Kaina,10:f2}|");
- }
- }
- sealed class Modeliai<T> : IEnumerable<T> where T : IComparable<T>
- {
- private sealed class Mazgas
- {
- public T Duomenys { get; set; }
- public Mazgas Kitas { get; set; }
- public Mazgas(T duomenys, Mazgas kitas)
- {
- Duomenys = duomenys;
- Kitas = kitas;
- }
- }
- private Mazgas pr { get; set; }
- private Mazgas pb { get; set; }
- private Mazgas d { get; set; }
- public Modeliai()
- {
- pr = null;
- pb = null;
- d = null;
- }
- public void Prideti(T duomenys)
- {
- if (pr is null)
- {
- pr = pb = new Mazgas(duomenys, null);
- }
- else
- {
- pb = pb.Kitas = new Mazgas(duomenys, null);
- }
- }
- public void Pradzia()
- {
- d = pr;
- }
- public void Kitas()
- {
- d = d.Kitas;
- }
- public bool Yra()
- {
- return d != null;
- }
- public T GautiDuom()
- {
- return d.Duomenys;
- }
- public void Rikiuoti()
- {
- bool buvoSukeitimu = true;
- while (buvoSukeitimu)
- {
- buvoSukeitimu = false;
- for (var d = pr; d.Kitas != null; d = d.Kitas)
- {
- if (d.Duomenys.CompareTo(d.Kitas.Duomenys) == 1)
- {
- var laikinas = d.Duomenys;
- d.Duomenys = d.Kitas.Duomenys;
- d.Kitas.Duomenys = laikinas;
- buvoSukeitimu = true;
- }
- }
- }
- }
- public IEnumerator<T> GetEnumerator()
- {
- for (var i = pr; !(i is null); i = i.Kitas)
- {
- yield return i.Duomenys;
- }
- }
- IEnumerator IEnumerable.GetEnumerator()
- {
- throw new NotImplementedException();
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Program p = new Program();
- Modeliai<Auto> A = p.Skaitymas("Duomenys.txt");
- decimal didKaina = p.BrangiausiasAuto(A);
- Modeliai<Auto> B = p.VisiBrangiausi(A, didKaina);
- using (StreamWriter fv= new StreamWriter("Rezultatai.txt"))
- {
- p.Spausdinimas("Pradiniai", fv, A);
- p.Spausdinimas("Neisrikiuotas", fv, B);
- B.Rikiuoti();
- p.Spausdinimas("Surikiuoti", fv, B);
- }
- }
- Modeliai<Auto> Skaitymas(string fv)
- {
- if (!File.Exists(fv))
- {
- return null;
- }
- var eilutes = File.ReadAllLines(fv);
- var auto = new Modeliai<Auto>();
- foreach (var eilute in eilutes)
- {
- var reiksme = eilute.Split(';');
- string gamintojas = reiksme[0];
- string modelis = reiksme[1];
- decimal kaina = decimal.Parse(reiksme[2]);
- auto.Prideti(new Auto(gamintojas, modelis, kaina));
- }
- return auto;
- }
- decimal BrangiausiasAuto(Modeliai<Auto> A)
- {
- decimal kaina = decimal.MinValue;
- foreach (var auto in A)
- {
- if (auto.Kaina >= kaina)
- {
- kaina = auto.Kaina;
- }
- }
- return kaina;
- }
- Modeliai<Auto> VisiBrangiausi(Modeliai<Auto> A, decimal kaina)
- {
- Modeliai<Auto> B = new Modeliai<Auto>();
- foreach (var auto in A)
- {
- decimal skirtumas = 1 - (auto.Kaina / kaina);
- if (skirtumas <= 0.25m)
- {
- B.Prideti(auto);
- }
- }
- return B;
- }
- void Spausdinimas(string antraste, StreamWriter fv, Modeliai<Auto> A)
- {
- int kiekis = 55;
- fv.WriteLine(antraste);
- fv.WriteLine(new string('-', kiekis));
- foreach (var auto in A)
- {
- fv.WriteLine(auto.ToString());
- }
- fv.WriteLine(new string('-', kiekis));
- fv.WriteLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement