.NET 4.x Рекурсивная функция - C#
Формулировка задачи:
Всем привет, ребята помогите пж решить задачу. За ранние спс.
написать рекурсивную функцию, которая на вход получает строку, а выводит на экран (или возвращает) символы, входящие в строку, в следующем порядке: 1) сначала гласные, потом согласные. 2) сначала символы в верхнем регистре, потом в нижнем
Решение задачи: «.NET 4.x Рекурсивная функция»
textual
Листинг программы
- using System;
- using System.Linq;
- namespace ConsoleApp23
- {
- class Program
- {
- static void Main(string[] args)
- {
- var str = "В чащах югА жил бы цитрус? Да, но фальшивый экземпляр!";
- var a = new char[] { 'а', 'о', 'и', 'й', 'е', 'ё', 'э', 'ы', 'у', 'ю', 'я' };
- var b = new char[] { 'б', 'в', 'г', 'д', 'ж', 'з', 'й', 'к', 'л', 'м', 'н', 'п', 'р', 'с', 'т', 'ф', 'х', 'ц', 'ч', 'ш', 'щ' };
- Func<string, string, string> recurse = null;
- recurse = (source, current) =>
- {
- var index = -1;
- for (var i = 0; i < source.Length; i++)
- {
- if (a.Contains(char.ToLower(source[i])) && char.IsUpper(source[i])) index = i;
- else if (a.Contains(char.ToLower(source[i])) && index == -1) index = i;
- }
- if (index == -1)
- {
- for (var i = 0; i < source.Length; i++)
- {
- if (b.Contains(char.ToLower(source[i])) && char.IsUpper(source[i])) index = i;
- else if (b.Contains(char.ToLower(source[i])) && index == -1) index = i;
- }
- }
- if (index != -1)
- {
- current += source[index];
- source = source.Remove(index, 1);
- return recurse(source, current);
- }
- source = string.Join("", source.Where(x => b.Contains(x))); //очищаем строку от символов не указанных в массивах
- current += source;
- return current;
- };
- Console.WriteLine(recurse(str, ""));
- Console.ReadKey();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д