/// <summary> /// Paspaudus mygtuka "start" bus atliekami veiksmai nurodyti siame void'e /// </summary> protected void Button1_Click(object sender, EventArgs e) { TextBox7.Text = " tarpas "; Konteinerine simboliai = new Konteinerine(); string[] zodziuMasyvas = new string[MaxZodziu]; int zodziuC; int n; Skaityti(simboliai, zodziuMasyvas, out zodziuC, out n); //-------surasys, kiek kartu buvo rastas kiekvienas zodis int[] ZodziuSkaicius = new int[zodziuC]; for (int i = 0; i < zodziuC; i++) { ZodziuSkaicius[i] = 0; } //-----HORIZONTALIAI int iHoriz = 0; RecursionHORIZONTALE(zodziuC, zodziuMasyvas, simboliai, n, ref ZodziuSkaicius, iHoriz); //--------------VERTIKALIAI int iVertik = 0; RecursionVERTIKALE(zodziuC, zodziuMasyvas, simboliai, n, ref ZodziuSkaicius, iVertik); //--------------PAGAL DIAGONALE int iDiogon = 0; RecursionDIAGONALE(zodziuC, zodziuMasyvas, simboliai, n, ref ZodziuSkaicius, iDiogon); string eill = "kvadratine matrica: " + n + " x " + n + "\r\n"; for (int i = 0; i < zodziuC; i++) { eill += "zodis '" + zodziuMasyvas[i] + "' pasikartoja " + ZodziuSkaicius[i] + " kartus"; eill += "\r\n"; } using (var writer = File.AppendText(f3)) { writer.WriteLine(); writer.WriteLine("Gauti rezultatai: "); writer.WriteLine(); writer.WriteLine(eill); } TextBox6.Text = "Rezultatai:"; TextBox3.Text = eill; }
/// <summary> /// Skaiciuoja, kiek zodziu yra vertikaliai /// </summary> /// <param name="zodziuC">kiek yra duotuju zodziu</param> /// <param name="zodziuMasyvas">duotuju zodziu masyvas</param> /// <param name="simboliai">simboliu konteineris</param> /// <param name="n">matricos dydis n*n</param> /// <param name="ZodziuSkaicius">Rastu zodziu skaicius</param> /// <param name="i">parametras, kuris nurodo, kuris zodis bus ieskomas</param> static void RecursionHORIZONTALE(int zodziuC, string[] zodziuMasyvas, Konteinerine simboliai, int n, ref int[] ZodziuSkaicius, int i) { char[] zodRaides = zodziuMasyvas[i].ToCharArray(); for (int k = 0; k < n; k++) //stulpeliai || { bool tikrinaH = true; int nuoKurio = 0; for (int l = 0; l < n; l++) //eilutes -- { if (zodRaides.Length <= (n - l)) // patikrina ar tas zodis tilps iki eilutes pabaigos { if ((char.ToLower(zodRaides[0])) == char.ToLower(simboliai.Imti(l, k).s)) { tikrinaH = true; for (int m1 = 1; m1 < zodziuMasyvas[i].Length; m1++) { if ((m1 + l <= n) && (tikrinaH)) { if ((char.ToLower(zodRaides[m1])) == char.ToLower(simboliai.Imti(l + m1, k).s)) { nuoKurio = l + m1; } else { tikrinaH = false; } } } if (tikrinaH) { ZodziuSkaicius[i] += 1; } } } } } if ((i + 1) < zodziuC) { RecursionHORIZONTALE(zodziuC, zodziuMasyvas, simboliai, n, ref ZodziuSkaicius, i + 1); } }
/// <summary> /// Skaito duomenis is duom failu /// </summary> /// <param name="simboliai">simboliu konteineris</param> /// <param name="zodziuMasyvas">duotuju zodziu masyvas</param> /// <param name="n">matricos dydis n*n</param> /// <param name="zodziuC">kiek yra duotuju zodziu</param> public void Skaityti(Konteinerine simboliai, string[] zodziuMasyvas, out int zodziuC, out int nn) { int MaxEil = 50; string line; int simboliuSk = 0; string[] eilutes = new string[MaxEil]; int teksEil = 0; // kiek duotam faile yra eiluciu using (StreamReader reader = new StreamReader(f1)) { while ((line = reader.ReadLine()) != null) { simboliuSk += line.Length; eilutes[teksEil++] = line; } } //------------randa kvadratines matricos n x n double n = Math.Sqrt(simboliuSk); n = Math.Round(n, 1); if (n % Math.Round(n, 0) == 0) { n = Math.Round(n, 0); } else { if (n % Math.Round(n, 0) >= 0.5) { n = Math.Round(n, 0); } else { n = n = Math.Round(n, 0) + 1; } } //------------sudeda teksta i viena eilute nn = Convert.ToInt32(n); string failas = ""; for (int i = 0; i < teksEil; i++) { failas = failas + eilutes[i]; } //------------slpit'ina kas simboli ir deda i kvadratine matrica string[] sym = new string[simboliuSk]; char[] symbol = failas.ToCharArray(); int count = 0; char a; for (int jj = 0; jj < n; jj++) { for (int ii = 0; ii < n; ii++) { if (count < failas.Length) { a = symbol[count]; } else { a = ' '; } Simboliai ss = new Simboliai(a); simboliai.Deti(ii, jj, ss); count++; } } //-------------skaito antro failo zodzius zodziuC = 0; string line1; string eilZod = ""; using (StreamReader reader = new StreamReader(f2)) { while ((line1 = reader.ReadLine()) != null) { if (line1.Length <= n / 2) { zodziuMasyvas[zodziuC++] = line1; } eilZod += line1 + "\r\n"; } } if (File.Exists(f3)) { File.Delete(f3); } //------------suraso pradinius duomenis i rezultatu faila string eil = ""; using (var writer = File.AppendText(f3)) { writer.WriteLine("Duotas tekstas: "); writer.WriteLine(); for (int i = 0; i < teksEil; i++) { writer.WriteLine(eilutes[i]); } writer.WriteLine("----------------------------------"); writer.WriteLine(); writer.WriteLine("Zodziu matrica "); writer.WriteLine(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { writer.Write(" " + simboliai.Imti(j, i).s); eil += " " + simboliai.Imti(j, i).s; } writer.WriteLine(); eil += "\r\n"; } writer.WriteLine("----------------------------------"); writer.WriteLine(); writer.WriteLine("Duoti zodziai:"); writer.WriteLine(); for (int i = 0; i < zodziuC; i++) { writer.WriteLine(zodziuMasyvas[i]); } writer.WriteLine("----------------------------------"); TextBox1.Text = eil; TextBox2.Text = "Pradiniai duomenys"; TextBox5.Text = "Duoti zodziai"; TextBox4.Text = eilZod; } }