Advertisement
Nautiluss

Untitled

Sep 19th, 2024 (edited)
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.49 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4.  
  5. class Program
  6. {
  7.     static void Main(string[] args)
  8.     {
  9.         // Путь к файлу
  10.         string filePath = "text.txt";
  11.  
  12.         // Проверка на сущ. файла
  13.         if (File.Exists(filePath))
  14.         {
  15.             // Чтение из файла с кодировкой utf-8
  16.             string originalText = File.ReadAllText(filePath, Encoding.UTF8);
  17.  
  18.             // Вывод исходника
  19.             Console.WriteLine("Исходный текст:");
  20.             Console.WriteLine(originalText); //сам вывод исходного текста
  21.  
  22.             // Разбивка текста на блоки через пробелы (ЭТО МАССИВ)
  23.             string[] words = originalText.Split(' ');
  24.  
  25.             // Перестраивание букв в словах (игнорируем знаки препинания)
  26.             for (int i = 0; i < words.Length; i++)
  27.             {
  28.                 words[i] = reverse(words[i]); // Использование функции для реверса слова
  29.             }
  30.  
  31.             // СборОЧКА готового результата
  32.             string reversedText = string.Join(" ", words); //Вставка пробелов которые изначально были
  33.  
  34.             // Вывод переработанного
  35.             Console.WriteLine("\nИнвертированный текст:");
  36.             Console.WriteLine(reversedText);
  37.         }
  38.         else
  39.         {
  40.             Console.WriteLine("Файл не найден.");
  41.         }
  42.  
  43.         Console.WriteLine("\nНажмите любую клавишу для выхода...");
  44.         Console.ReadKey(); //Чтоб консоль не закрывалась
  45.     }
  46.  
  47.     // Функция реверса слова (Игнор знаков препинания)
  48.     static string reverse(string word)
  49.     {
  50.         char[] chars = word.ToCharArray(); // Преобразуем слово в массив символов
  51.         int left = 0; // Индекс начала
  52.         int right = chars.Length - 1; // Индекс конца
  53.  
  54.         while (left < right) // Буквально: Пока индекс начала слова меньше Индекса правого {Реверс}
  55.         {
  56.             // ПоПуСк символов, которые не являются буквами
  57.             if (!char.IsLetter(chars[left]))
  58.             {
  59.                 left++; // Увеличивание левого индекса если буковка
  60.             }
  61.             else if (!char.IsLetter(chars[right]))
  62.             {
  63.                 right--; // иначе уменьшение правого если не буква
  64.             }
  65.             else
  66.             {
  67.                 // Меняем местами буквы
  68.                 char temp = chars[left];  // Сохранение символа с позиции left в переменной temp
  69.                 chars[left] = chars[right];  // помещение символа с позиции right на позицию left
  70.                 chars[right] = temp;  // помещение сохраненного символа из temp на позицию right
  71.                 left++; // Сдвиг влево
  72.                 right--; // Сдвиг вправо
  73.             }
  74.         }
  75.  
  76.         return new string(chars); // Возвращение слова
  77.     }
  78. }
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement