Проверка строки первого массива на содержание символов из строки второго массива - C#
Формулировка задачи:
есть два массива по N строк, возможны пустые строки, в данном случае строки генерируются из набора алфавита, как можно сделать тоже самое, но без Enumerable и с заполнением с клавиатуры
есть вопросы с Enumerable, непонятны обе строки
Листинг программы
- static void Main(string[] args)
- {
- Random rnd = new Random();
- char[] symbols = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя ".ToCharArray();
- int n = 50;
- string[] sentences = new string[n];
- string[] words = new string[n];
- for (int i = 0; i < n; i++)
- {
- sentences[i] = new String(Enumerable.Repeat(rnd, 50).Select(x => symbols[x.Next(symbols.Length)]).ToArray());
- words[i] = new String(Enumerable.Repeat(rnd, 2).Select(x => symbols[x.Next(symbols.Length - 1)]).ToArray());
- }
- for (int i = 0; i < n; i++)
- {
- if (sentences[i].IndexOf(new String(words[i].Reverse().ToArray())) != -1)
- {
- Console.Write(sentences[i]);
- Console.Write(" содержит обратное ");
- Console.WriteLine(words[i]);
- }
- }
Решение задачи: «Проверка строки первого массива на содержание символов из строки второго массива»
textual
Листинг программы
- using System;
- class test
- {
- static bool ContainsReverse(string str1,string str2)
- {
- bool ok = false;
- if(str1.Length != 0 && str2.Length !=0 && str1.Length >= str2.Length)
- {
- for (int i = str1.Length - 1; i >= str2.Length-1; i--)
- {
- if (str1[i] == str2[0])
- {
- ok = true;
- for(int c = i-1,b = 1;b<str2.Length;b++,c--)
- if (str1[c] != str2[b])
- {
- ok = false;
- break;
- }
- if (ok) return true;
- }
- }
- }
- return false;
- }
- static void Main()
- {
- int lngt = 0,d=0;
- do
- {
- Console.Write("длина : ");
- lngt = int.Parse(Console.ReadLine());
- }while(!(lngt>0 & lngt <= 50));
- Console.WriteLine("\nЗАПОЛНЕНИЕ МАССИВОВ : ");
- string[] words = new string[lngt];
- string[] reversed = new string[lngt];
- string[,] result = new string[lngt,2];
- for (int i = 0; i < lngt; i++)
- {
- Console.Write("words[{0}] = ", i);
- words[i] = Console.ReadLine();
- Console.Write("reversed[{0}] = ", i);
- reversed[i] = Console.ReadLine();
- if (ContainsReverse(words[i],reversed[i]))
- {
- result[d, 0] = words[i];
- result[d++, 1] = reversed[i];
- }
- }
- Console.WriteLine("\nРЕЗУЛЬТАТЫ : ");
- for (int i = 0; i < d; i++)
- Console.WriteLine("{0} содержит {1} в обратном порядке",result[i,0],result[i,1]);
- Console.ReadKey(true);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д