Advertisement
Guest User

fdvdfvdfv

a guest
Apr 19th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.58 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace ConsoleApp1
  10. {
  11. class Auto : IComparable<Auto>
  12. {
  13. public string Gamintojas { get; set; }
  14. public string Modelis { get; set; }
  15. public decimal Kaina { get; set; }
  16.  
  17. public Auto(string gamintojas, string modelis, decimal kaina)
  18. {
  19. Gamintojas = gamintojas;
  20. Modelis = modelis;
  21. Kaina = kaina;
  22. }
  23.  
  24. public int CompareTo(Auto kitas)
  25. {
  26. if (kitas is null)
  27. {
  28. return 1;
  29. }
  30. if (Kaina.Equals(kitas.Kaina))
  31. {
  32. return Modelis.CompareTo(kitas.Modelis);
  33. }
  34. return kitas.Kaina.CompareTo(Kaina);
  35. }
  36.  
  37. public override string ToString()
  38. {
  39. return string.Format($"|{Gamintojas,-15}|{Modelis,-15}|{Kaina,10:f2}|");
  40. }
  41. }
  42.  
  43. sealed class Modeliai<T> : IEnumerable<T> where T : IComparable<T>
  44. {
  45. private sealed class Mazgas
  46. {
  47. public T Duomenys { get; set; }
  48. public Mazgas Kitas { get; set; }
  49.  
  50. public Mazgas(T duomenys, Mazgas kitas)
  51. {
  52. Duomenys = duomenys;
  53. Kitas = kitas;
  54. }
  55. }
  56.  
  57. private Mazgas pr { get; set; }
  58. private Mazgas pb { get; set; }
  59. private Mazgas d { get; set; }
  60.  
  61. public Modeliai()
  62. {
  63. pr = null;
  64. pb = null;
  65. d = null;
  66. }
  67.  
  68. public void Prideti(T duomenys)
  69. {
  70. if (pr is null)
  71. {
  72. pr = pb = new Mazgas(duomenys, null);
  73. }
  74. else
  75. {
  76. pb = pb.Kitas = new Mazgas(duomenys, null);
  77. }
  78. }
  79.  
  80. public void Pradzia()
  81. {
  82. d = pr;
  83. }
  84.  
  85. public void Kitas()
  86. {
  87. d = d.Kitas;
  88. }
  89.  
  90. public bool Yra()
  91. {
  92. return d != null;
  93. }
  94.  
  95. public T GautiDuom()
  96. {
  97. return d.Duomenys;
  98. }
  99.  
  100. public void Rikiuoti()
  101. {
  102. bool buvoSukeitimu = true;
  103. while (buvoSukeitimu)
  104. {
  105. buvoSukeitimu = false;
  106. for (var d = pr; d.Kitas != null; d = d.Kitas)
  107. {
  108. if (d.Duomenys.CompareTo(d.Kitas.Duomenys) == 1)
  109. {
  110. var laikinas = d.Duomenys;
  111. d.Duomenys = d.Kitas.Duomenys;
  112. d.Kitas.Duomenys = laikinas;
  113.  
  114. buvoSukeitimu = true;
  115. }
  116. }
  117. }
  118. }
  119.  
  120. public IEnumerator<T> GetEnumerator()
  121. {
  122. for (var i = pr; !(i is null); i = i.Kitas)
  123. {
  124. yield return i.Duomenys;
  125. }
  126. }
  127.  
  128. IEnumerator IEnumerable.GetEnumerator()
  129. {
  130. throw new NotImplementedException();
  131. }
  132. }
  133.  
  134. class Program
  135. {
  136. static void Main(string[] args)
  137. {
  138. Program p = new Program();
  139.  
  140. Modeliai<Auto> A = p.Skaitymas("Duomenys.txt");
  141.  
  142. decimal didKaina = p.BrangiausiasAuto(A);
  143.  
  144. Modeliai<Auto> B = p.VisiBrangiausi(A, didKaina);
  145.  
  146. using (StreamWriter fv= new StreamWriter("Rezultatai.txt"))
  147. {
  148. p.Spausdinimas("Pradiniai", fv, A);
  149. p.Spausdinimas("Neisrikiuotas", fv, B);
  150. B.Rikiuoti();
  151. p.Spausdinimas("Surikiuoti", fv, B);
  152. }
  153. }
  154.  
  155.  
  156. Modeliai<Auto> Skaitymas(string fv)
  157. {
  158. if (!File.Exists(fv))
  159. {
  160. return null;
  161. }
  162. var eilutes = File.ReadAllLines(fv);
  163. var auto = new Modeliai<Auto>();
  164.  
  165. foreach (var eilute in eilutes)
  166. {
  167. var reiksme = eilute.Split(';');
  168.  
  169. string gamintojas = reiksme[0];
  170. string modelis = reiksme[1];
  171. decimal kaina = decimal.Parse(reiksme[2]);
  172. auto.Prideti(new Auto(gamintojas, modelis, kaina));
  173. }
  174.  
  175. return auto;
  176. }
  177.  
  178. decimal BrangiausiasAuto(Modeliai<Auto> A)
  179. {
  180. decimal kaina = decimal.MinValue;
  181. foreach (var auto in A)
  182. {
  183. if (auto.Kaina >= kaina)
  184. {
  185. kaina = auto.Kaina;
  186. }
  187. }
  188. return kaina;
  189. }
  190.  
  191. Modeliai<Auto> VisiBrangiausi(Modeliai<Auto> A, decimal kaina)
  192. {
  193. Modeliai<Auto> B = new Modeliai<Auto>();
  194.  
  195. foreach (var auto in A)
  196. {
  197. decimal skirtumas = 1 - (auto.Kaina / kaina);
  198.  
  199. if (skirtumas <= 0.25m)
  200. {
  201. B.Prideti(auto);
  202. }
  203. }
  204.  
  205. return B;
  206. }
  207.  
  208. void Spausdinimas(string antraste, StreamWriter fv, Modeliai<Auto> A)
  209. {
  210. int kiekis = 55;
  211. fv.WriteLine(antraste);
  212. fv.WriteLine(new string('-', kiekis));
  213. foreach (var auto in A)
  214. {
  215. fv.WriteLine(auto.ToString());
  216. }
  217. fv.WriteLine(new string('-', kiekis));
  218. fv.WriteLine();
  219. }
  220. }
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement