/// <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); }
/// <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)); } } } } } }
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); } }