ret_0

albina_12.17

Dec 4th, 2019
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.36 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace albina_12
  7. {
  8.     class Program
  9.     {
  10.         static string ToOneString(string s)
  11.         {
  12.             // эта функция превращает строку например вида "ворона кОкОс __=ПОМОГИ:6754те" в вид "воронакокоспомогите"
  13.             string result = "";
  14.             // в нижний регистр
  15.             s = s.ToLower();
  16.             foreach (char c in s)
  17.             {
  18.                 // если символ является символом латиницы или кириллицы то берем его
  19.                 if (c <= 'я' && c >= 'а' || c <= 'z' && c >= 'a')
  20.                     result += c;
  21.             }
  22.             return result;
  23.         }
  24.  
  25.         static string ReverseString(string s)
  26.         {
  27.             // тупо разворачиваем строку торобоан
  28.             string result = "";
  29.             for(int i = 0; i < s.Length; i++)
  30.                 result += s[s.Length - 1 - i];
  31.             return result;
  32.         }
  33.  
  34.         static bool IsPalindrome(string s)
  35.         {
  36.             // проверяем является ли строка палиндромом
  37.             // перед вызовом этой функции мы должны сию строку прогнать через ToOneString
  38.             // а то вдруг там нечисть всякая
  39.  
  40.             // если там 1 символ то палиндром, если 2 то сравниваем их
  41.             if (s.Length < 2)
  42.                 return true;
  43.             else if (s.Length == 2)
  44.                 return s[0].Equals(s[1]);
  45.  
  46.             // start & end - первая & вторая половина слова соответственно
  47.             string start, end;
  48.             // если в строке четное кол-во символов
  49.             if (s.Length % 2 == 0)
  50.             {
  51.                 start = s.Remove(s.Length / 2);
  52.                 end = s.Replace(start, "");
  53.             }
  54.             else
  55.             {
  56.                 start = s.Remove((s.Length / 2));
  57.                 end = s.Replace(start, "");
  58.                 end = end.Remove(0, 1);
  59.             }
  60.             // Equals возвращает true или false, в зависимости от того, одинаковы ли строки (start и end наоборот)
  61.             return start.Equals(ReverseString(end));
  62.         }
  63.  
  64.         static void Main(string[] args)
  65.         {
  66.             // считываем текст построчно (одна строка - один палиндром или просто слово или любой текст
  67.             // программа проверяет на являемость палиндромом только в отношении кириллицы и латиницы
  68.             // это значит, что фразы "соси писос", "С О СИП иСо С", "СОСИПИСО____+_+№))+№"(;*?с", "с1ос1и2п3и4с6о7с" БУДУТ палиндромами
  69.             // ибо мы их всех приводим в вид ТОЛЬКО кириллицы/латиницы нижнего регистра, т.е. к виду "сосиписос"
  70.  
  71.             // читаем из файла инпут.тхт
  72.             string s = System.IO.File.ReadAllText(@"input.txt"), tmp;
  73.             // split разделяет целый стринг на массив стрингов (строк), ибо они были вида "one\r\ntwo\r\nthree\r\n"
  74.             string[] words = s.Split('\n');
  75.             int i = 0;
  76.             bool found = false;
  77.             Console.Write("Ищем палиндромы в файле input.txt:\n");
  78.             foreach (string ss in words)
  79.             {
  80.                 tmp = ToOneString(ss);
  81.                 if (IsPalindrome(tmp))
  82.                 {
  83.                     Console.WriteLine((i + 1) + ". " + words[i]);
  84.                     found = true;
  85.                 }
  86.                 i++;
  87.             }
  88.             if (!found)
  89.                 Console.Write("\nА их там и нет :c");
  90.             else
  91.                 Console.Write("\nЭто и были палиндромы");
  92.             Console.ReadKey();
  93.         }
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment