Esempio n. 1
0
        /// <summary>
        /// Sudaro fragmentus ir juos įdeda į ilgiausių fragmentų konteinerį
        /// </summary>
        /// <param name="ZodziaiSuSkyrikliaisPirmas">Pirmo failo žodžiai su skyrikliais</param>
        /// <param name="ZodziaiSuSkyrikliaisAntras">Antro failo žodžiai su skyrikliais</param>
        /// <returns>Ilgiausių fragmentų konteinerį</returns>
        FragmentuKonteineris IlgiausiFragmentai(ZodziuKonteineris ZodziaiSuSkyrikliaisPirmas, ZodziuKonteineris ZodziaiSuSkyrikliaisAntras)
        {
            FragmentuKonteineris Fragmentai = new FragmentuKonteineris();

            for (int i = 0; i < ZodziaiSuSkyrikliaisPirmas.Kiekis; i++)
            {
                for (int g = 0; g < ZodziaiSuSkyrikliaisAntras.Kiekis; g++)
                {
                    EilutesNumeriuKonteineris Numeriai = new EilutesNumeriuKonteineris();
                    if (ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i).Pavadinimas.ToLower() == ZodziaiSuSkyrikliaisAntras.PaimtiZodi(g).Pavadinimas.ToLower())
                    {
                        StringBuilder nauja = new StringBuilder();

                        int o = 1;
                        nauja.Append(ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i).Pavadinimas.ToLower());
                        nauja.Append(" ");

                        Numeriai.IdetiNumeri(ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i).Eilute);

                        Numeriai.IdetiNumeri(ZodziaiSuSkyrikliaisAntras.PaimtiZodi(g).Eilute);

                        while (o > 0)
                        {
                            if (i + o >= ZodziaiSuSkyrikliaisPirmas.Kiekis || g + o >= ZodziaiSuSkyrikliaisAntras.Kiekis)
                            {
                                break;
                            }
                            if (ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i + o).Pavadinimas.ToLower() == ZodziaiSuSkyrikliaisAntras.PaimtiZodi(g + o).Pavadinimas.ToLower())
                            {
                                nauja.Append(ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i + o).Pavadinimas.ToLower());

                                Numeriai.IdetiNumeri(ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i + o).Eilute);
                                Numeriai.IdetiNumeri(ZodziaiSuSkyrikliaisAntras.PaimtiZodi(g + o).Eilute);
                                nauja.Append(" ");
                                o++;
                            }
                            else
                            {
                                o = 0;
                            }
                        }


                        if (nauja.Length == IlgiausioFragmentoElementuSkaicius(ZodziaiSuSkyrikliaisPirmas, ZodziaiSuSkyrikliaisAntras))
                        {
                            Fragmentai.IdetiFragmenta(nauja.ToString());
                            Fragmentai.IdetiNumerius(Numeriai);
                        }
                    }
                }
            }
            return(Fragmentai);
        }
Esempio n. 2
0
        int IlgiausioZodzioRaidziuSkaicius(ZodziuKonteineris VisiPirmosKnygosZodziai)
        {
            int ilgis = 0;

            for (int i = 0; i < VisiPirmosKnygosZodziai.Kiekis; i++)
            {
                if (VisiPirmosKnygosZodziai.PaimtiZodi(i).Pavadinimas.Length >= ilgis)
                {
                    ilgis = VisiPirmosKnygosZodziai.PaimtiZodi(i).Pavadinimas.Length;
                }
            }
            return(ilgis);
        }
Esempio n. 3
0
 /// <summary>
 /// Spausdina į failą pertvarkytą tekstą
 /// </summary>
 /// <param name="fv">Failas, į kurį rašys</param>
 /// <param name="ZodziaiSuSkyrikliaisPirmas">Pirmo failo žodžiai su skyrikliais</param>
 /// <param name="ZodziaiSuSkyrikliaisAntras">Antro failo žodžiai su skyrikliais</param>
 void PertvarkytoTekstoSpausdinimasFaile(string fv, ZodziuKonteineris ZodziaiSuSkyrikliaisPirmas, ZodziuKonteineris ZodziaiSuSkyrikliaisAntras)
 {
     using (StreamWriter writer = new StreamWriter(fv, false, Encoding.UTF8))
     {
         if (TekstoPertvarkymas(ZodziaiSuSkyrikliaisPirmas, ZodziaiSuSkyrikliaisAntras).Length == 0)
         {
             writer.WriteLine("Duomenų failuose nėra");
         }
         else
         {
             writer.WriteLine(TekstoPertvarkymas(ZodziaiSuSkyrikliaisPirmas, ZodziaiSuSkyrikliaisAntras));
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Apdoroja duomenis
        /// </summary>
        /// <param name="fv">Duomenų failo pavadinimas</param>
        /// <param name="VisiZodziai">Žodžiai be skyriklių</param>
        /// <param name="skyrikliai">Skyriklių aibė</param>
        /// <param name="ZodziaiSuSkyrikliais">Žodžiai su skyrikliais</param>
        void Apdorojimas(string fv, ref ZodziuKonteineris VisiZodziai, char[] skyrikliai, ref ZodziuKonteineris ZodziaiSuSkyrikliais)
        {
            int eilute = 0;

            string[] lines = File.ReadAllLines(fv, Encoding.UTF8);
            foreach (string line in lines)
            {
                eilute++;
                if (line.Length > 0)
                {
                    ZodziuApdorojimas(line, skyrikliai, ref VisiZodziai, ref ZodziaiSuSkyrikliais, eilute);
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Suranda ilgiausio fragmento simbolių skaičių
        /// </summary>
        /// <param name="ZodziaiSuSkyrikliaisPirmas">Pirmo failo žodžiai su skyrikliais</param>
        /// <param name="ZodziaiSuSkyrikliaisAntras">Antro failo žodžiai su skyrikliais</param>
        /// <returns>Ilgiausio fragmento elementų skaičių</returns>
        int IlgiausioFragmentoElementuSkaicius(ZodziuKonteineris ZodziaiSuSkyrikliaisPirmas, ZodziuKonteineris ZodziaiSuSkyrikliaisAntras)
        {
            StringBuilder Didziausias = new StringBuilder();

            for (int i = 0; i < ZodziaiSuSkyrikliaisPirmas.Kiekis; i++)
            {
                for (int g = 0; g < ZodziaiSuSkyrikliaisAntras.Kiekis; g++)
                {
                    if (ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i).Pavadinimas.ToLower() == ZodziaiSuSkyrikliaisAntras.PaimtiZodi(g).Pavadinimas.ToLower())
                    {
                        StringBuilder nauja = new StringBuilder();

                        int o = 1;
                        nauja.Append(ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i).Pavadinimas.ToLower());
                        nauja.Append(" ");

                        while (o > 0)
                        {
                            if (i + o >= ZodziaiSuSkyrikliaisPirmas.Kiekis || g + o >= ZodziaiSuSkyrikliaisAntras.Kiekis)
                            {
                                break;
                            }
                            if (ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i + o).Pavadinimas.ToLower() == ZodziaiSuSkyrikliaisAntras.PaimtiZodi(g + o).Pavadinimas.ToLower())
                            {
                                nauja.Append(ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i + o).Pavadinimas.ToLower());
                                nauja.Append(" ");
                                o++;
                            }
                            else
                            {
                                o = 0;
                            }
                        }


                        if (nauja.Length >= Didziausias.Length)
                        {
                            Didziausias = nauja;
                        }
                    }
                }
            }

            return(Didziausias.Length);
        }
Esempio n. 6
0
 /// <summary>
 /// Atspausdina ilgiausius žodžius faile
 /// </summary>
 /// <param name="IlgiausiZodziai">Ilgiausių žodžių konteineris</param>
 /// <param name="fv">Failas, į kurį rašys</param>
 /// <param name="PirmosKnygosZodziai">Pirmo failo žodžiai be skyriklių</param>
 void IlgiausiuZodziuSpausdinimasFaile(ZodziuKonteineris IlgiausiZodziai, string fv, ZodziuKonteineris PirmosKnygosZodziai)
 {
     using (StreamWriter writer = new StreamWriter(fv, true, Encoding.UTF8))
     {
         if (IlgiausiZodziai.Kiekis == 0)
         {
             writer.WriteLine("Duomenų failai tušti arba antrame tekste yra visi pirmo failo ilgiausi žodžiai");
         }
         else
         {
             writer.WriteLine("Ilgiausi ({0} raidžių) žodžiai:", IlgiausioZodzioRaidziuSkaicius(PirmosKnygosZodziai));
             for (int i = 0; i < IlgiausiZodziai.Kiekis; i++)
             {
                 writer.WriteLine(IlgiausiZodziai.PaimtiZodi(i));
             }
         }
     }
 }
Esempio n. 7
0
        /// <summary>
        /// Sudeda ilgiausius žodžius, kurių nėra antrame faile, į konteinerį
        /// </summary>
        /// <param name="PirmosKnygosZodziai">Pirmo failo žodžiai be skyriklių</param>
        /// <param name="AntrosKnygosZodziai">Antro failo žodžiai be skyriklių</param>
        /// <returns>Ilgiausių žodžių konteinerį</returns>
        ZodziuKonteineris IlgiausiZodziai(ZodziuKonteineris PirmosKnygosZodziai, ZodziuKonteineris AntrosKnygosZodziai)
        {
            ZodziuKonteineris Ilgiausi = new ZodziuKonteineris(IlgiausiuZodziuDydis);
            bool found = false;

            for (int i = 0; i < PirmosKnygosZodziai.Kiekis; i++)
            {
                if (PirmosKnygosZodziai.PaimtiZodi(i).Pavadinimas.Length == IlgiausioZodzioRaidziuSkaicius(PirmosKnygosZodziai))
                {
                    if (AntrosKnygosZodziai.ArYraToksPavadinimas(PirmosKnygosZodziai.PaimtiZodi(i).Pavadinimas))
                    {
                        found = true;
                    }
                    if (found == false && Ilgiausi.Kiekis != 10)
                    {
                        Ilgiausi.PridetiZodi(PirmosKnygosZodziai.PaimtiZodi(i));
                    }
                    found = false;
                }
            }

            return(Ilgiausi);
        }
Esempio n. 8
0
 /// <summary>
 /// Apdoroja žodžius
 /// </summary>
 /// <param name="line">Eilutė</param>
 /// <param name="skyrikliai">Skyriklių aibė</param>
 /// <param name="VisiZodziai">Žodžiai be skyriklių</param>
 /// <param name="ZodziaiSuSKyrikliais">Žodžiai su skyrikliais</param>
 /// <param name="eilute">Eilutės numeris</param>
 void ZodziuApdorojimas(string line, char[] skyrikliai, ref ZodziuKonteineris VisiZodziai, ref ZodziuKonteineris ZodziaiSuSKyrikliais, int eilute)
 {
     string[] parts = line.Split(skyrikliai, StringSplitOptions.RemoveEmptyEntries);
     string[] dalys = line.Split(' ');
     foreach (string dalis in dalys)
     {
         if (dalis.Length > 0)
         {
             Zodis Zodziukas = new Zodis(dalis, 0, eilute);
             ZodziaiSuSKyrikliais.PridetiZodi(Zodziukas);
         }
     }
     foreach (string zodis in parts)
     {
         if (zodis.Length > 1 || zodis.Length == 1 && ArSimbolisYraRaide(zodis))
         {
             string zodelis = zodis.ToLower();
             if (VisiZodziai.ArYraToksPavadinimas(zodelis))
             {
                 for (int i = 0; i < VisiZodziai.Kiekis; i++)
                 {
                     if (VisiZodziai.PaimtiZodi(i).Pavadinimas == zodelis)
                     {
                         VisiZodziai.PaimtiZodi(i).Pasikartojimai++;
                         break;
                     }
                 }
             }
             else
             {
                 Zodis Zodziukas = new Zodis(zodelis, 0, eilute);
                 VisiZodziai.PridetiZodi(Zodziukas);
             }
         }
     }
 }
Esempio n. 9
0
 /// <summary>
 /// Spasudina ilgiausius fragmentus faile
 /// </summary>
 /// <param name="IlgiausiFragmentai">Ilgiausių fragmentų konteineris</param>
 /// <param name="fv">Failas, į kurį rašys</param>
 /// <param name="ZodziaiSuSkyrikliaisPirmas">Pirmo failo žodžiai su skyrikliais</param>
 /// <param name="ZodziaiSuSkyrikliaisAntras">Antro failo žodžiai su skyrikliais</param>
 void IlgiausiuFragmentuSpausdinimasFaile(FragmentuKonteineris IlgiausiFragmentai, string fv, ZodziuKonteineris ZodziaiSuSkyrikliaisPirmas, ZodziuKonteineris ZodziaiSuSkyrikliaisAntras)
 {
     using (StreamWriter writer = new StreamWriter(fv, true, Encoding.UTF8))
     {
         if (IlgiausiFragmentai.Count == 0)
         {
             writer.WriteLine("Duomenų failai tušti arba tekstuose nėra vienodų fragmentų");
         }
         else
         {
             writer.WriteLine("Ilgiausi ({0} simbolių), sudaryti iš žodžių fragentai:", IlgiausioFragmentoElementuSkaicius(ZodziaiSuSkyrikliaisPirmas, ZodziaiSuSkyrikliaisAntras));
             for (int i = 0; i < IlgiausiFragmentai.Count; i++)
             {
                 writer.WriteLine(IlgiausiFragmentai.PaimtiFragmenta(i));
                 writer.WriteLine("Šis fragmentas pirmame duomenų faile yra tokiose eilutėse:");
                 for (int g = 0; g < IlgiausiFragmentai.Numeriai[i].Count; g = g + 2)
                 {
                     int yra = 0;
                     for (int h = g + 2; h < IlgiausiFragmentai.Numeriai[i].Count; h = h + 2)
                     {
                         if (IlgiausiFragmentai.Numeriai[i].PaimtiNumeri(g) == IlgiausiFragmentai.Numeriai[i].PaimtiNumeri(h))
                         {
                             yra = 1;
                         }
                     }
                     if (yra == 0)
                     {
                         writer.WriteLine(IlgiausiFragmentai.Numeriai[i].PaimtiNumeri(g));
                     }
                 }
                 writer.WriteLine("Šis fragmentas antrame duomenų faile yra tokiose eilutėse:");
                 for (int g = 1; g < IlgiausiFragmentai.Numeriai[i].Count; g = g + 2)
                 {
                     int yra = 0;
                     for (int h = g + 2; h < IlgiausiFragmentai.Numeriai[i].Count; h = h + 2)
                     {
                         if (IlgiausiFragmentai.Numeriai[i].PaimtiNumeri(g) == IlgiausiFragmentai.Numeriai[i].PaimtiNumeri(h))
                         {
                             yra = 1;
                         }
                     }
                     if (yra == 0)
                     {
                         writer.WriteLine(IlgiausiFragmentai.Numeriai[i].PaimtiNumeri(g));
                     }
                 }
             }
         }
     }
 }
Esempio n. 10
0
        public const int IlgiausiuZodziuDydis = 10;     //Masyvo, kuriame talpinami ilgiausi žodžiai, dydis
        static void Main(string[] args)
        {
            const string CFd  = "..\\..\\Knyga1.txt";    //Pirmas duomenų failas
            const string CFd2 = "..\\..\\Knyga2.txt";    //Antras duomenų failas
            const string CFr  = "..\\..\\Rodikliai.txt"; //Pirmas rezultatų failas
            const string CFr2 = "..\\..\\ManoKnyga.txt"; //Antras rezultatų faials

            //Patikrina, ar toks rezultatų failas jau yra, jeigu taip, tada jį ištrina
            if (File.Exists(CFr))
            {
                File.Delete(CFr);
            }

            Console.OutputEncoding = Encoding.UTF8;                                         //Konsolėje rašomos lietuviškos raidės
            Program p = new Program();                                                      //Sukuriamas Program klasės objektas

            char[] skyrikliai = { ' ', '.', ',', '!', '?', ':', ';', '(', ')', '\t', '"' }; //Skyriklių aibė

            //Sukuriami žodžių konteinerio obejktai, kuriuose talpinami žodžiai be skyriklių, ir apskaičiuojami pasikartojimai
            ZodziuKonteineris PirmosKnygosZodziai = new ZodziuKonteineris(VisuZodziuDydis);
            ZodziuKonteineris AntrosKnygosZodziai = new ZodziuKonteineris(VisuZodziuDydis);

            //Sukuriami žodžių konteinerio objektai, kuriuose talpinami žodžiai su skyrikliais tokia eilės tvarka, kokia yra tekste
            ZodziuKonteineris ZodziaiSuSkyrikliaisPirmas = new ZodziuKonteineris(VisuZodziuDydis);
            ZodziuKonteineris ZodziaiSuSkyrikliaisAntras = new ZodziuKonteineris(VisuZodziuDydis);

            //Apdoroja failus, ir sudeda žodžius į atitinkamus konteinerius
            p.Apdorojimas(CFd, ref PirmosKnygosZodziai, skyrikliai, ref ZodziaiSuSkyrikliaisPirmas);
            p.Apdorojimas(CFd2, ref AntrosKnygosZodziai, skyrikliai, ref ZodziaiSuSkyrikliaisAntras);


            ZodziuKonteineris IlgiausiZodziai = new ZodziuKonteineris(IlgiausiuZodziuDydis); //Žodžių konteineris, talpinantis ilgiausius žodžius

            IlgiausiZodziai = p.IlgiausiZodziai(PirmosKnygosZodziai, AntrosKnygosZodziai);   //Surandami ilgiausi žodžiai

            //Patikrina, ar yra ilgiausių žodžių, jeigu taip, tada juos atspausdina
            if (IlgiausiZodziai.Kiekis == 0)
            {
                Console.WriteLine("Duomenų failai tušti arba antrame tekste yra visi pirmo failo ilgiausi žodžiai");
                p.IlgiausiuZodziuSpausdinimasFaile(IlgiausiZodziai, CFr, PirmosKnygosZodziai);
            }
            else
            {
                p.IlgiausiuZodziuSpausdinimasFaile(IlgiausiZodziai, CFr, PirmosKnygosZodziai);
            }


            FragmentuKonteineris Fragmentai = new FragmentuKonteineris();                              //Fragmentų konteinerio objektas

            Fragmentai = p.IlgiausiFragmentai(ZodziaiSuSkyrikliaisPirmas, ZodziaiSuSkyrikliaisAntras); //Surandami ilgiausi fragmentai

            //Patikrina ar yra ilgiausių fragmentų, jeigu taip, tada juos atspausdina kartu su eilučių numeriais
            if (Fragmentai.Count == 0)
            {
                Console.WriteLine("Duomenų failai tušti arba tekstuose nėra vienodų fragmentų");
                p.IlgiausiuFragmentuSpausdinimasFaile(Fragmentai, CFr, ZodziaiSuSkyrikliaisPirmas, ZodziaiSuSkyrikliaisAntras);
            }
            else
            {
                p.IlgiausiuFragmentuSpausdinimasFaile(Fragmentai, CFr, ZodziaiSuSkyrikliaisPirmas, ZodziaiSuSkyrikliaisAntras);
            }


            StringBuilder Tekstas = new StringBuilder();                                            //Bendro teksto objektas

            Tekstas = p.TekstoPertvarkymas(ZodziaiSuSkyrikliaisPirmas, ZodziaiSuSkyrikliaisAntras); //Pagal taisykles sudaro vieną tekstą


            //Patikrina ar tekstas yra, jeigu taip, tada jį atspausdina
            if (Tekstas.Length == 0)
            {
                Console.WriteLine("Duomenų failuose nėra");
                p.PertvarkytoTekstoSpausdinimasFaile(CFr2, ZodziaiSuSkyrikliaisPirmas, ZodziaiSuSkyrikliaisAntras);
            }
            else
            {
                p.PertvarkytoTekstoSpausdinimasFaile(CFr2, ZodziaiSuSkyrikliaisPirmas, ZodziaiSuSkyrikliaisAntras);
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Pagal taisykles iš dviejų tekstų padaro vieną
        /// </summary>
        /// <param name="ZodziaiSuSkyrikliaisPirmas">Pirmo failo žodžiai su skyrikliais</param>
        /// <param name="ZodziaiSuSkyrikliaisAntras">Antro failo žodžiai su skyrikliais</param>
        /// <returns>Sudarytą bendrą tekstą</returns>
        StringBuilder TekstoPertvarkymas(ZodziuKonteineris ZodziaiSuSkyrikliaisPirmas, ZodziuKonteineris ZodziaiSuSkyrikliaisAntras)
        {
            StringBuilder VisasTekstas       = new StringBuilder();
            int           k                  = 0;
            int           AntroZodzioPradzia = 0;

            for (int i = 0; i < ZodziaiSuSkyrikliaisPirmas.Kiekis; i++)
            {
                string PirmasZodis = Regex.Replace(ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i).Pavadinimas, "[.,;()\"]", String.Empty);
                string AntrasZodis = Regex.Replace(ZodziaiSuSkyrikliaisAntras.PaimtiZodi(AntroZodzioPradzia).Pavadinimas, "[.,;()\"]", String.Empty);
                if (PirmasZodis != AntrasZodis)
                {
                    VisasTekstas.Append(ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i).Pavadinimas);
                    VisasTekstas.Append(" ");
                }
                else
                {
                    if (i + 1 < ZodziaiSuSkyrikliaisPirmas.Kiekis)
                    {
                        PirmasZodis = Regex.Replace(ZodziaiSuSkyrikliaisPirmas.PaimtiZodi(i + 1).Pavadinimas, "[.,;()\"]", String.Empty);
                    }
                    else
                    {
                        break;
                    }
                    for (int g = AntroZodzioPradzia; g < ZodziaiSuSkyrikliaisAntras.Kiekis; g++)
                    {
                        AntrasZodis = Regex.Replace(ZodziaiSuSkyrikliaisAntras.PaimtiZodi(g).Pavadinimas, "[.,;()\"]", String.Empty);
                        if (PirmasZodis != AntrasZodis)
                        {
                            VisasTekstas.Append(ZodziaiSuSkyrikliaisAntras.PaimtiZodi(g).Pavadinimas);
                            VisasTekstas.Append(" ");
                            if (g == ZodziaiSuSkyrikliaisAntras.Kiekis - 1)
                            {
                                AntroZodzioPradzia = ZodziaiSuSkyrikliaisAntras.Kiekis - 1;
                            }
                        }
                        else
                        {
                            if (g + 1 < ZodziaiSuSkyrikliaisAntras.Kiekis - 1)
                            {
                                AntroZodzioPradzia = g + 1;
                            }
                            else
                            {
                                AntroZodzioPradzia = ZodziaiSuSkyrikliaisAntras.Kiekis;
                            }
                            break;
                        }
                    }
                }
            }

            if (AntroZodzioPradzia < ZodziaiSuSkyrikliaisAntras.Kiekis - 1)
            {
                for (int i = AntroZodzioPradzia; i < ZodziaiSuSkyrikliaisAntras.Kiekis; i++)
                {
                    VisasTekstas.Append(ZodziaiSuSkyrikliaisAntras.PaimtiZodi(i).Pavadinimas);
                    VisasTekstas.Append(" ");
                }
            }


            return(VisasTekstas);
        }