Проверка строки первого массива на содержание символов из строки второго массива - 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д