static void Spausdinti(string rez, Korteles korteles, string antraste)
        {
            string virsus =
                "--------------------------------------------------------------------------------------------------\r\n" +
                " Pavadinimas    Pradinė suma     Tarifas į savus    Tarifas į kitus    SMS į savus    SMS į kitus \r\n" +
                "--------------------------------------------------------------------------------------------------";

            using (var fr = File.AppendText(rez))
            {
                fr.WriteLine(antraste);
                if (korteles.Imti() > 0)
                {
                    fr.WriteLine(virsus);
                    for (int i = 0; i < korteles.Imti(); i++)
                    {
                        fr.WriteLine("{0}", korteles.Imti(i).ToString());
                    }
                    fr.WriteLine("--------------------------------------------------------------------------------------------------\r\n");
                }
                else
                {
                    fr.WriteLine("Sąrašas tuščias");
                }
            }
        }
        static void Main(string[] args)
        {
            Korteles korteles = new Korteles();

            Skaityti(duom, ref korteles);

            if (File.Exists(rez))
            {
                File.Delete(rez);
            }
            Spausdinti(rez, korteles, "Pradiniai duomenys:");

            double maziausiaKaina = MaziausiosSMSKainos(korteles);

            SpausdintiMaziausiosSMSKainos(rez, korteles, "SMS tarifai mažiausi:", maziausiaKaina);

            Korteles naujas = new Korteles();

            Nemokamai(korteles, naujas);
            Spausdinti(rez, naujas, "Paliktos tik tos kortelės, su kuriomis į savus tinklus galima skambinti ir rašyti nemokamai:");

            if (naujas.Imti() > 0)
            {
                naujas.Sort();
                Spausdinti(rez, naujas, "Surikiuotos kortelės:");
            }

            Console.WriteLine("Programa baige darba!");
        }
 static void Nemokamai(Korteles korteles, Korteles naujas)
 {
     for (int i = 0; i < korteles.Imti(); i++)
     {
         if (korteles.Imti(i).KoksTarifasISavusTinklus() == 0 && korteles.Imti(i).SMSiSavus() == 0)
         {
             naujas.Dėti(korteles.Imti(i));
         }
     }
 }
        static double MaziausiosSMSKainos(Korteles korteles)
        {
            double maziausiaKaina = korteles.Imti(0).SMSiKitus();

            for (int i = 1; i < korteles.Imti(); i++)
            {
                if (korteles.Imti(i).SMSiKitus() < maziausiaKaina)
                {
                    maziausiaKaina = korteles.Imti(i).SMSiKitus();
                }
            }
            return(maziausiaKaina);
        }
        static void SpausdintiMaziausiosSMSKainos(string rez, Korteles korteles, string antraste, double mazK)
        {
            string virsus =
                "--------------------------------------------------------------------------------------------------\r\n" +
                " Pavadinimas    Pradinė suma     Tarifas į savus    Tarifas į kitus    SMS į savus    SMS į kitus \r\n" +
                "--------------------------------------------------------------------------------------------------";

            using (var fr = File.AppendText(rez))
            {
                fr.WriteLine(antraste);
                fr.WriteLine(virsus);
                for (int i = 0; i < korteles.Imti(); i++)
                {
                    if (korteles.Imti(i).SMSiKitus() == mazK)
                    {
                        fr.WriteLine("{0}", korteles.Imti(i).ToString());
                    }
                }
                fr.WriteLine("--------------------------------------------------------------------------------------------------\r\n");
            }
        }
        static void Skaityti(string duom, ref Korteles korteles)
        {
            using (StreamReader reader = new StreamReader(duom))
            {
                string   pav;
                double   prad, t1, t2, sms1, sms2;
                string   eilute;
                string[] skaidymas;

                while ((eilute = reader.ReadLine()) != null && korteles.Imti() < korteles.Max())
                {
                    skaidymas = eilute.Split(';');
                    pav       = skaidymas[0].Trim();
                    prad      = double.Parse(skaidymas[1].Trim());
                    t1        = double.Parse(skaidymas[2].Trim());
                    t2        = double.Parse(skaidymas[3].Trim());
                    sms1      = double.Parse(skaidymas[4].Trim());
                    sms2      = double.Parse(skaidymas[5].Trim());
                    Operatorius op = new Operatorius(pav, prad, t1, t2, sms1, sms2);
                    korteles.Dėti(op);
                }
            }
        }