Advertisement
Guest User

Untitled

a guest
Nov 30th, 2015
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.59 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7.  
  8. /** Užduotis. Faile Tekstas.txt užrašytas tekstas. Gretimi žodžiai eilutėje
  9. skiriami vienu arba keliais skyrikliais. Skyrikliai yra žinomi.
  10. Rasti ir spausdinti ekrane ilgiausią teksto žodį iš tų, kuriuose yra 3
  11. skirtingos balsės (jei tokie žodžiai yra keli, rasti pirmą). To žodžio eilutę
  12. perkelti į teksto pradžią. Redaguotą tekstą užrašyti į failą RedTekstas.txt.
  13. Tekstą analizuokite skaitydami po vieną eilutę. */
  14.  
  15. namespace K2
  16. {
  17.     class Program
  18.     {
  19.         const string CFd = "..\\..\\Tekstas.txt";
  20.         const string CFr = "..\\..\\RedTekstas.txt";
  21.  
  22.         static void Main(string[] args)
  23.         {
  24.             if (File.Exists(CFr))
  25.                 File.Delete(CFr);
  26.             string skyr = " .,!?:;()\t";
  27.             string zod;
  28.             int me = -1;
  29.             RastiZTekste(CFd, skyr, out zod, ref me);
  30.             if (me >= 0)
  31.             {
  32.                 PerkeltiEilute(CFd, CFr, me);
  33.                 Console.WriteLine("{0}", zod);
  34.             }
  35.             else
  36.                 Console.WriteLine("Žodžio, atitinkančio kriterijus, nėra.");
  37.             Console.ReadKey();
  38.         }
  39.  
  40.         // Grąžina eilutės (žodžio) e skirtingų balsių skaičių.
  41.         static int SkirtBalsiuSkaicius(string e)
  42.         {
  43.             int skai = 0;
  44.             char[] balsės = { 'a', 'e', 'i', 'o', 'u', 'y' };
  45.             for (int i = 0; i < balsės.Length; i++)
  46.                 if (e.IndexOf(balsės[i]) >= 0)
  47.                     skai = skai + 1;
  48.             return skai;
  49.         }
  50.  
  51.         // Eilutėje e randa ilgiausią žodį iš tų, kuriuose yra 3 skirtingos balsės.
  52.         // Neradus grąžina tuščią eilutę.
  53.         // sk – skyrikliai.
  54.         static string RastiZodiEil(string e, string sk)
  55.         {
  56.             char[] skyr = sk.ToCharArray();
  57.             string[] parts = e.Split(skyr, StringSplitOptions.RemoveEmptyEntries);
  58.             foreach (string žodis in parts)
  59.             {
  60.                 if (SkirtBalsiuSkaicius(žodis) == 3)
  61.                     return žodis;
  62.             }
  63.             return "";
  64.         }
  65.  
  66.         // Faile fv randa ilgiausią žodį zod iš tų,
  67.         // kuriuose yra 3 skirtingos balsės, ir jo eilutės numerį me.
  68.         // sk – skyrikliai.
  69.         static void RastiZTekste(string fv, string sk, out string zod, ref int me)
  70.         {
  71.             string[] lines = File.ReadAllLines(fv, Encoding.GetEncoding(1257));
  72.             zod = "";
  73.             int m = 0;
  74.             foreach (string line in lines)
  75.             {
  76.                 if (zod.Length < RastiZodiEil(line, sk).Length)
  77.                 {
  78.                     zod = RastiZodiEil(line, sk);
  79.                     me = m;
  80.                 }
  81.                 m++;
  82.             }
  83.         }
  84.  
  85.         // Eilutę, kurios numeris n, perkelia į teksto pradžią; fvd – pradinio,
  86.         // fvr – redaguoto failų vardai.
  87.         static void PerkeltiEilute(string fvd, string fvr, int n)
  88.         {
  89.             string[] lines = File.ReadAllLines(fvd, Encoding.GetEncoding(1257));
  90.             int sk = 0;
  91.             foreach (string line in lines)
  92.             sk++;
  93.             using (var fr = File.AppendText(fvr))
  94.             {
  95.                 fr.WriteLine(lines[n]);
  96.                 for (int i = 0; i < n; i++)
  97.                     fr.WriteLine(lines[i]);
  98.                 for (int i = n + 1; i < sk; i++)
  99.                     fr.WriteLine(lines[i]);
  100.             }
  101.         }
  102.  
  103.     }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement