Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Text;
- class Program
- {
- static void Main(string[] args)
- {
- // Путь к файлу
- string filePath = "text.txt";
- // Проверка на сущ. файла
- if (File.Exists(filePath))
- {
- // Чтение из файла с кодировкой utf-8
- string originalText = File.ReadAllText(filePath, Encoding.UTF8);
- // Вывод исходника
- Console.WriteLine("Исходный текст:");
- Console.WriteLine(originalText); //сам вывод исходного текста
- // Разбивка текста на блоки через пробелы (ЭТО МАССИВ)
- string[] words = originalText.Split(' ');
- // Перестраивание букв в словах (игнорируем знаки препинания)
- for (int i = 0; i < words.Length; i++)
- {
- words[i] = reverse(words[i]); // Использование функции для реверса слова
- }
- // СборОЧКА готового результата
- string reversedText = string.Join(" ", words); //Вставка пробелов которые изначально были
- // Вывод переработанного
- Console.WriteLine("\nИнвертированный текст:");
- Console.WriteLine(reversedText);
- }
- else
- {
- Console.WriteLine("Файл не найден.");
- }
- Console.WriteLine("\nНажмите любую клавишу для выхода...");
- Console.ReadKey(); //Чтоб консоль не закрывалась
- }
- // Функция реверса слова (Игнор знаков препинания)
- static string reverse(string word)
- {
- char[] chars = word.ToCharArray(); // Преобразуем слово в массив символов
- int left = 0; // Индекс начала
- int right = chars.Length - 1; // Индекс конца
- while (left < right) // Буквально: Пока индекс начала слова меньше Индекса правого {Реверс}
- {
- // ПоПуСк символов, которые не являются буквами
- if (!char.IsLetter(chars[left]))
- {
- left++; // Увеличивание левого индекса если буковка
- }
- else if (!char.IsLetter(chars[right]))
- {
- right--; // иначе уменьшение правого если не буква
- }
- else
- {
- // Меняем местами буквы
- char temp = chars[left]; // Сохранение символа с позиции left в переменной temp
- chars[left] = chars[right]; // помещение символа с позиции right на позицию left
- chars[right] = temp; // помещение сохраненного символа из temp на позицию right
- left++; // Сдвиг влево
- right--; // Сдвиг вправо
- }
- }
- return new string(chars); // Возвращение слова
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement