Advertisement
MartisK

KD1

May 25th, 2017
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.08 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7.  
  8. namespace KD1
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             const string duomenuFailas1 = @"..\..\Duomenys1.txt";
  15.             const string duomenuFailas2 = @"..\..\Duomenys2.txt";
  16.             const string rezultatuFailas = @"..\..\Rezultatai.txt";
  17.  
  18.             Fakultetas fak1 = NuskaitytiDuomenis(duomenuFailas1);
  19.             Fakultetas fak2 = NuskaitytiDuomenis(duomenuFailas2);
  20.  
  21.             Fakultetas fak1_filter = ArMaziauUz(fak1, 6);
  22.             Fakultetas fak2_filter = ArMaziauUz(fak2, 7);
  23.  
  24.             fak1_filter.Rikiavimas();
  25.             fak2_filter.Rikiavimas();
  26.  
  27.             SpausdintiRezultatus(rezultatuFailas, fak1, fak2, fak1_filter, fak2_filter, KurDaugiau(fak1_filter, fak2_filter));
  28.         }
  29.  
  30.         private static Fakultetas NuskaitytiDuomenis(string failas)
  31.         {
  32.             string[] eilutes = File.ReadAllLines(@failas, Encoding.UTF8);
  33.             string[] eilute;
  34.  
  35.             Fakultetas fak = new Fakultetas(eilutes[0]);
  36.  
  37.             for (int i = 1; i < eilutes.Count(); i++)
  38.             {
  39.                 eilute = eilutes[i].Split(' ');
  40.                 int pazymiuSkaicius = eilute.Count() - 3;
  41.                 int[] pazymiai = new int[pazymiuSkaicius];
  42.                 for (int p = 0; p < pazymiuSkaicius; p++)
  43.                 {
  44.                     pazymiai[p] = int.Parse(eilute[p + 3]);
  45.                 }
  46.  
  47.                 Studentas stud = new Studentas(eilute[0], eilute[1], eilute[2], pazymiai, pazymiuSkaicius);
  48.                 fak.PridetiStudenta(stud);
  49.             }
  50.  
  51.             return fak;
  52.         }
  53.  
  54.         private static Fakultetas ArMaziauUz(Fakultetas fak, int uz_kiek)
  55.         {
  56.             Fakultetas fakultetas = new Fakultetas(fak.GautiPavadinima());
  57.  
  58.             for (int i = 0; i < fak.StudentuSkaicius; i++)
  59.             {
  60.                 int[] pazymiai = fak.GautiStudenta(i).GautiPazymius();
  61.                 for (int j = 0; j < pazymiai.Count(); j++)
  62.                 {
  63.                     if(pazymiai[j] < uz_kiek)
  64.                     {
  65.                         fakultetas.PridetiStudenta(fak.GautiStudenta(i));
  66.                         break;
  67.                     }
  68.                 }
  69.             }
  70.  
  71.             return fakultetas;
  72.         }
  73.  
  74.         private static void SpausdintiRezultatus(string failas, Fakultetas fak1, Fakultetas fak2, Fakultetas afak1, Fakultetas afak2, string ats)
  75.         {
  76.             using (StreamWriter writer = new StreamWriter(@failas, false, Encoding.UTF8))
  77.             {
  78.                 writer.WriteLine("Pradiniai");
  79.                 SpausdintiFakulteta(writer, fak1);
  80.                 SpausdintiFakulteta(writer, fak2);
  81.  
  82.                 writer.WriteLine("Rezultatai");
  83.                 writer.WriteLine("{0}", ats);
  84.                 SpausdintiFakulteta(writer, afak1);
  85.                 SpausdintiFakulteta(writer, afak2);
  86.             }
  87.         }
  88.  
  89.         private static void SpausdintiFakulteta(StreamWriter writer, Fakultetas fak)
  90.         {
  91.             writer.WriteLine("----------------------------------------");
  92.             writer.WriteLine("{0}", fak.GautiPavadinima());
  93.             writer.WriteLine("----------------------------------------");
  94.             for (int i = 0; i < fak.StudentuSkaicius; i++)
  95.             {
  96.                 writer.WriteLine("{0}", fak.GautiStudenta(i).ToString());
  97.                 writer.WriteLine("----------------------------------------");
  98.             }
  99.             writer.WriteLine();
  100.         }
  101.  
  102.         private static string KurDaugiau(Fakultetas fak1, Fakultetas fak2)
  103.         {
  104.             string ats;
  105.  
  106.             if(fak1 != fak2)
  107.             {
  108.                 if(fak1 > fak2)
  109.                 {
  110.                     ats = fak1.GautiPavadinima() + " daugiau";
  111.                 }
  112.                 else
  113.                 {
  114.                     ats = fak2.GautiPavadinima() + " daugiau";
  115.                 }
  116.             }
  117.             else
  118.             {
  119.                 ats = "Lygiai";
  120.             }
  121.  
  122.             return ats;
  123.         }
  124.     }
  125.  
  126.     class Fakultetas
  127.     {
  128.         const int daugiausiaStudentu = 256;
  129.  
  130.         string Pavadinimas { get; set; }
  131.  
  132.         private Studentas[] Studentai { get; set; }
  133.         public int StudentuSkaicius { get; private set; }
  134.  
  135.         public Fakultetas()
  136.         {
  137.         }
  138.  
  139.         public Fakultetas(string pav)
  140.         {
  141.             Pavadinimas = pav;
  142.             Studentai = new Studentas[daugiausiaStudentu];
  143.             StudentuSkaicius = 0;
  144.         }
  145.  
  146.         public void PridetiStudenta(Studentas stud)
  147.         {
  148.             if(stud.GautiPazymiuVidurki() > 0)
  149.             {
  150.                 Studentai[StudentuSkaicius] = stud;
  151.             }
  152.             else
  153.             {
  154.                 Studentai[StudentuSkaicius] = stud;
  155.                 stud.Rekursija();
  156.             }
  157.             StudentuSkaicius++;
  158.         }
  159.  
  160.         public Studentas GautiStudenta(int indeksas)
  161.         {
  162.             return Studentai[indeksas];
  163.         }
  164.  
  165.         public string GautiPavadinima()
  166.         {
  167.             return Pavadinimas;
  168.         }
  169.  
  170.         public void Rikiavimas()
  171.         {
  172.             // pagal abecele
  173.             for (int i = 0; i < StudentuSkaicius - 1; i++)
  174.             {
  175.                 for (int j = i + 1; j < StudentuSkaicius; j++)
  176.                 {
  177.                     if(Studentai[j].PilnasVardas().CompareTo(Studentai[i].PilnasVardas()) == 1)
  178.                     {
  179.                         Studentas laik = Studentai[j];
  180.                         Studentai[j] = Studentai[i];
  181.                         Studentai[i] = laik;
  182.                     }
  183.                 }
  184.             }
  185.  
  186.             // pagal vidurki
  187.             for (int i = 0; i < StudentuSkaicius - 1; i++)
  188.             {
  189.                 for (int j = i + 1; j < StudentuSkaicius; j++)
  190.                 {
  191.                     if (Studentai[j].GautiPazymiuVidurki() > Studentai[i].GautiPazymiuVidurki())
  192.                     {
  193.                         Studentas laik = Studentai[j];
  194.                         Studentai[j] = Studentai[i];
  195.                         Studentai[i] = laik;
  196.                     }
  197.                 }
  198.             }
  199.         }
  200.  
  201.         public override bool Equals(object obj)
  202.         {
  203.             return this.Equals(obj as Fakultetas);
  204.         }
  205.  
  206.         public bool Equals(Fakultetas fak)
  207.         {
  208.             if (Object.ReferenceEquals(fak, null))
  209.                 return false;
  210.  
  211.             if (this.GetType() != fak.GetType())
  212.                 return false;
  213.  
  214.             return (Pavadinimas == fak.Pavadinimas);
  215.         }
  216.  
  217.         public override int GetHashCode()
  218.         {
  219.             return Pavadinimas.GetHashCode();
  220.         }
  221.  
  222.         public static bool operator >(Fakultetas lhs, Fakultetas rhs)
  223.         {
  224.             if(lhs != null && rhs != null)
  225.             {
  226.                 if (lhs.StudentuSkaicius > rhs.StudentuSkaicius)
  227.                     return true;
  228.                 else
  229.                     return false;
  230.             }
  231.             else
  232.             {
  233.                 if (lhs == null && rhs == null)
  234.                     return false;
  235.                 else
  236.                 {
  237.                     if (lhs != null && rhs == null)
  238.                         return true;
  239.                     else
  240.                         return false;
  241.                 }
  242.             }
  243.         }
  244.  
  245.         public static bool operator <(Fakultetas lhs, Fakultetas rhs)
  246.         {
  247.             if (lhs != null && rhs != null)
  248.             {
  249.                 if (lhs.StudentuSkaicius < rhs.StudentuSkaicius)
  250.                     return true;
  251.                 else
  252.                     return false;
  253.             }
  254.             else
  255.             {
  256.                 if (lhs == null && rhs == null)
  257.                     return false;
  258.                 else
  259.                 {
  260.                     if (lhs != null && rhs == null)
  261.                         return false;
  262.                     else
  263.                         return true;
  264.                 }
  265.             }
  266.         }
  267.  
  268.         public static bool operator ==(Fakultetas lhs, Fakultetas rhs)
  269.         {
  270.             if(Object.ReferenceEquals(lhs, null))
  271.             {
  272.                 if(Object.ReferenceEquals(rhs, null))
  273.                 {
  274.                     return true;
  275.                 }
  276.                 return false;
  277.             }
  278.  
  279.             return lhs.Equals(rhs);
  280.         }
  281.  
  282.         public static bool operator !=(Fakultetas lhs, Fakultetas rhs)
  283.         {
  284.             return !(lhs == rhs);
  285.         }
  286.     }
  287.  
  288.     class Studentas
  289.     {
  290.         string Pavarde { get; set; }
  291.         string Vardas { get; set; }
  292.         string Grupe { get; set; }
  293.         int[] Pazymiai { get; set; }
  294.         double PazymiuVidurkis { get; set; }
  295.         int PazymiuKiekis { get; set; }
  296.  
  297.         public Studentas()
  298.         {
  299.         }
  300.  
  301.         public Studentas(string pav, string vard, string gr, int[] pazymiai, int pazsk)
  302.         {
  303.             Pavarde = pav;
  304.             Vardas = vard;
  305.             Grupe = gr;
  306.             Pazymiai = pazymiai;
  307.             PazymiuKiekis = pazsk;
  308.         }
  309.  
  310.         public void Rekursija(int skaicius = 0)
  311.         {
  312.             if(Pazymiai.Count() > skaicius)
  313.             {
  314.                 PazymiuVidurkis += Pazymiai[skaicius];
  315.                 Rekursija(skaicius + 1);
  316.             }
  317.             else
  318.             {
  319.                 PazymiuVidurkis /= Pazymiai.Count();
  320.             }
  321.         }
  322.  
  323.         public string PilnasVardas()
  324.         {
  325.             return Pavarde + " " + Vardas;
  326.         }
  327.  
  328.         public string GautiGrupe()
  329.         {
  330.             return Grupe;
  331.         }
  332.  
  333.         public double GautiPazymiuVidurki()
  334.         {
  335.             return PazymiuVidurkis;
  336.         }
  337.  
  338.         public int[] GautiPazymius()
  339.         {
  340.             return Pazymiai;
  341.         }
  342.  
  343.         public override string ToString()
  344.         {
  345.             return String.Format("| {0, -20} | {1, -5} | {2:0.00} |", PilnasVardas(), Grupe, PazymiuVidurkis);
  346.         }
  347.     }
  348. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement