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

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

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

есть два массива по N строк, возможны пустые строки, в данном случае строки генерируются из набора алфавита, как можно сделать тоже самое, но без 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]);
                }
            }
есть вопросы с Enumerable, непонятны обе строки

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

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);
    }
}

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


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

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

6   голосов , оценка 3.833 из 5
Похожие ответы