Проверка строки первого массива на содержание символов из строки второго массива - C#

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

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

есть два массива по N строк, возможны пустые строки, в данном случае строки генерируются из набора алфавита, как можно сделать тоже самое, но без Enumerable и с заполнением с клавиатуры
Листинг программы
  1. static void Main(string[] args)
  2. {
  3. Random rnd = new Random();
  4. char[] symbols = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя ".ToCharArray();
  5. int n = 50;
  6. string[] sentences = new string[n];
  7. string[] words = new string[n];
  8. for (int i = 0; i < n; i++)
  9. {
  10. sentences[i] = new String(Enumerable.Repeat(rnd, 50).Select(x => symbols[x.Next(symbols.Length)]).ToArray());
  11. words[i] = new String(Enumerable.Repeat(rnd, 2).Select(x => symbols[x.Next(symbols.Length - 1)]).ToArray());
  12. }
  13. for (int i = 0; i < n; i++)
  14. {
  15. if (sentences[i].IndexOf(new String(words[i].Reverse().ToArray())) != -1)
  16. {
  17. Console.Write(sentences[i]);
  18. Console.Write(" содержит обратное ");
  19. Console.WriteLine(words[i]);
  20. }
  21. }
есть вопросы с Enumerable, непонятны обе строки

Решение задачи: «Проверка строки первого массива на содержание символов из строки второго массива»

textual
Листинг программы
  1. using System;
  2. class test
  3. {
  4.     static bool ContainsReverse(string str1,string str2)
  5.     {
  6.         bool ok = false;
  7.         if(str1.Length != 0 && str2.Length !=0 && str1.Length >= str2.Length)
  8.         {
  9.              for (int i = str1.Length - 1; i >= str2.Length-1; i--)
  10.              {
  11.                  if (str1[i] == str2[0])
  12.                  {
  13.                      ok = true;
  14.                      for(int c = i-1,b = 1;b<str2.Length;b++,c--)
  15.                          if (str1[c] != str2[b])
  16.                          {
  17.                              ok = false;
  18.                              break;
  19.                          }
  20.                      if (ok) return true;
  21.                  }
  22.              }
  23.         }
  24.         return false;
  25.     }
  26.     static void Main()
  27.     {
  28.         int lngt = 0,d=0;
  29.         do
  30.         {
  31.             Console.Write("длина : ");
  32.             lngt = int.Parse(Console.ReadLine());
  33.         }while(!(lngt>0 & lngt <= 50));
  34.         Console.WriteLine("\nЗАПОЛНЕНИЕ МАССИВОВ : ");
  35.         string[] words = new string[lngt];
  36.         string[] reversed = new string[lngt];
  37.         string[,] result = new string[lngt,2];
  38.         for (int i = 0; i < lngt; i++)
  39.         {
  40.             Console.Write("words[{0}] = ", i);
  41.             words[i] = Console.ReadLine();
  42.             Console.Write("reversed[{0}] = ", i);
  43.             reversed[i] = Console.ReadLine();
  44.  
  45.             if (ContainsReverse(words[i],reversed[i]))
  46.                 {
  47.                     result[d, 0] = words[i];
  48.                     result[d++, 1] = reversed[i];
  49.                 }
  50.             }
  51.         Console.WriteLine("\nРЕЗУЛЬТАТЫ : ");
  52.         for (int i = 0; i < d; i++)
  53.             Console.WriteLine("{0} содержит {1} в обратном порядке",result[i,0],result[i,1]);
  54.         Console.ReadKey(true);
  55.     }
  56. }

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


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

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

6   голосов , оценка 3.833 из 5

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

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

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