.NET 4.x Рекурсивная функция - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет, ребята помогите пж решить задачу. За ранние спс. написать рекурсивную функцию, которая на вход получает строку, а выводит на экран (или возвращает) символы, входящие в строку, в следующем порядке: 1) сначала гласные, потом согласные. 2) сначала символы в верхнем регистре, потом в нижнем

Решение задачи: «.NET 4.x Рекурсивная функция»

textual
Листинг программы
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace ConsoleApp23
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             var str = "В чащах югА жил бы цитрус? Да, но фальшивый экземпляр!";
  11.  
  12.             var a = new char[] { 'а', 'о', 'и', 'й', 'е', 'ё', 'э', 'ы', 'у', 'ю', 'я' };
  13.             var b = new char[] { 'б', 'в', 'г', 'д', 'ж', 'з', 'й', 'к', 'л', 'м', 'н', 'п', 'р', 'с', 'т', 'ф', 'х', 'ц', 'ч', 'ш', 'щ' };
  14.  
  15.             Func<string, string, string> recurse = null;
  16.  
  17.             recurse = (source, current) =>
  18.             {
  19.                 var index = -1;
  20.  
  21.                 for (var i = 0; i < source.Length; i++)
  22.                 {
  23.                     if (a.Contains(char.ToLower(source[i])) && char.IsUpper(source[i])) index = i;
  24.                     else if (a.Contains(char.ToLower(source[i])) && index == -1) index = i;
  25.                 }
  26.  
  27.                 if (index == -1)
  28.                 {
  29.                     for (var i = 0; i < source.Length; i++)
  30.                     {
  31.                         if (b.Contains(char.ToLower(source[i])) && char.IsUpper(source[i])) index = i;
  32.                         else if (b.Contains(char.ToLower(source[i])) && index == -1) index = i;
  33.                     }
  34.                 }
  35.  
  36.                 if (index != -1)
  37.                 {
  38.                     current += source[index];
  39.                     source = source.Remove(index, 1);
  40.                     return recurse(source, current);
  41.                 }
  42.  
  43.                 source = string.Join("", source.Where(x => b.Contains(x))); //очищаем строку от символов не указанных в массивах
  44.  
  45.                 current += source;
  46.                 return current;
  47.             };
  48.  
  49.             Console.WriteLine(recurse(str, ""));
  50.             Console.ReadKey();
  51.         }
  52.     }
  53. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы