static void Atrinkti(StudentsDevices senas, string tipas, StudentsDevices naujas)
 {
     for (senas.Pradžia(); !senas.isEmpty(); senas.Kitas())
     {
         Mobilus duom = senas.ImtiDuomenis();
         if (duom.Tipas == tipas)
         {
             naujas.Papildyti(duom);
         }
     }
 }
        static void Spausdinti(string fv, StudentsDevices A, string koment)
        {
            using (var failas = new StreamWriter(fv, true))
            {
                failas.WriteLine(koment);
                failas.WriteLine("+------------------------------+---------------" + "-------+--------------+");
                failas.WriteLine("|           Modelis            |      Tipas    " + "       | Veik. trukmė |");
                failas.WriteLine("+------------------------------+---------------" + "-------+--------------+");

                // Sąrašo peržiūra, panaudojant sąsajos metodus
                for (A.Pradžia(); !A.isEmpty(); A.Kitas())
                {
                    failas.WriteLine("{0}", A.ImtiDuomenis().ToString());
                }

                failas.WriteLine("+------------------------------+---------------" + "-------+--------------+\r\n");
            }
        }
        static StudentsDevices Skaityti(string fv)
        {
            var A = new StudentsDevices();

            using (var failas = new StreamReader(fv))
            {
                string eilute;

                A.VardasPavardė = eilute = failas.ReadLine();
                while ((eilute = failas.ReadLine()) != null)
                {
                    string[] eilDalis = eilute.Split(';');
                    string   modelis  = eilDalis[0];
                    string   tipas    = eilDalis[1];
                    int      baterija = int.Parse(eilDalis[2]);
                    Mobilus  elem     = new Mobilus(modelis, tipas, baterija);
                    A.Papildyti(elem);
                }
            }
            return(A);
        }
        static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.GetEncoding(1257);
            StudentsDevices A; // pirmojo studento duomenys
            StudentsDevices B; // antrojo studento duomenys

            A = Skaityti(CFd1);
            B = Skaityti(CFd2);
            if (File.Exists(CFr))
            {
                File.Delete(CFr);
            }

            Spausdinti(CFr, A, A.VardasPavardė);
            Spausdinti(CFr, B, B.VardasPavardė);
            using (var failas = new StreamWriter(CFr, true))
            {
                Mobilus max;
                max = A.MaxTrukmė();
                failas.WriteLine("StudentsDevices: {0}, ilgiausiai veikianti baterija \r\nModelis: " +
                                 "{1}, tipas: {2}, trukmė: {3}.",
                                 A.VardasPavardė, max.Modelis, max.Tipas, max.Baterija);

                failas.WriteLine();
                max = B.MaxTrukmė();
                failas.WriteLine("StudentsDevices: {0}, ilgiausiai veikianti baterija \r\nModelis: " +
                                 " {1}, tipas: {2}, trukmė: {3}.",
                                 B.VardasPavardė, max.Modelis, max.Tipas, max.Baterija);
            }

            StudentsDevices Naujas = new StudentsDevices();

            // atrinkti duomenys
            Console.WriteLine("Įveskite norimą įrenginio tipą:");
            string tipas = Console.ReadLine();

            // Įvedamas norimas įrenginio tipas
            Atrinkti(A, tipas, Naujas);
            Atrinkti(B, tipas, Naujas);
            // --- Suformuoto sąrašo spausdinimas ir rikiavimas ---
            Naujas.Pradžia();
            if (!Naujas.isEmpty())
            {
                Spausdinti(CFr, Naujas, "\nAtrinkti nerikiuoti (" + tipas + ")");
                Naujas.RikiuotiMinMax();
                Spausdinti(CFr, Naujas, "\nAtrinkti surikiuoti (" + tipas + ")");
            }
            else
            {
                using (var failas = new StreamWriter(CFr, true))
                {
                    failas.WriteLine("\r\n(" + tipas + ")\r\nNaujas sąrašas nesudarytas.\r\n");
                }
            }

            StudentsDevices C; // trečio studento duomenys

            C = Skaityti(CFd3);
            Spausdinti(CFr, C, C.VardasPavardė);
            Įterpti(C, tipas, Naujas);
            Naujas.Pradžia();
            if (!Naujas.isEmpty())
            {
                Spausdinti(CFr, Naujas, "Rikiuotas po papildymo");
            }
            else
            {
                using (var failas = new StreamWriter(CFr, true))
                {
                    failas.WriteLine("\r\n(" + tipas + ")\r\nNaujas sąrašas liko nesudarytas.\r\n");
                }
            }

            C.Naikinti();
            if (!Naujas.isEmpty())
            {
                Spausdinti(CFr, Naujas, "Sąrašas po sunaikinomo.");
            }
            else
            {
                using (var failas = new StreamWriter(CFr, true))
                {
                    failas.WriteLine("Naujas sąrašas sunaikintas.\r\n");
                }
            }
        }