Проверьте, содержит ли последняя строка многомерной матрицы гласные - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь проверить, содержит ли последняя строка моей матрицы символов 8x10 гласные, и сосчитать их. Проблема в том, что «.Contains» не работает, и я не могу понять, как решить эту проблему, не используя длинное «if».

class Program
{

    static void Main(string[] args)
    {
        var matrix = new char[8, 10];
        Random rnd = new Random();

        for (int i = 0; i < matrix.GetLength(0); i++)
        {
            for (int j = 0; j < matrix.GetLength(1); j++)
            {
                matrix[i, j] = (char)rnd.Next('a', 'z' + 1);
                Console.Write(matrix[i, j] + " ");
            }
            Console.WriteLine();
        }


        Console.ReadKey();
    }
}

}

1 Ответ

0 голосов
/ 25 февраля 2020

Этот код работал для меня (без .Contains):

public class Program
{   
    public static char[] GetRow(char[,] matrix, int rowNumber)
    {
        return Enumerable.Range(0, matrix.GetLength(1))
                .Select(x => matrix[rowNumber, x])
                .ToArray();
    }

    public static void Main()
    {
        var array = new [,]
            {
                {'j', 'j', 'j', 'j', 'j'},
                {'j', 'j', 'j', 'j', 'j'},
                {'j', 'j', 'j', 'j', 'j'},
                {'a', 'j', 'j', 'j', 'j'},
            };
        char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
        var lastRowIndex = array.GetLength(0) - 1;
        var lastRow = GetRow(array, lastRowIndex);
        int vowelCount = lastRow.Count(x => vowels.Any(vowel => vowel == x));

        if(vowelCount == 0) Console.WriteLine("There is no vowel in matrix's last row");
        else if(vowelCount > 0) Console.WriteLine("There are vowel(s) in matrix's last row");       
    }
}

Однако этот код ниже также работал для меня, с .Contains () (я предпочитаю этот второй, так как он чище и больше производительности c):

public class Program
{   
    public static char[] GetRow(char[,] matrix, int rowNumber)
    {
        return Enumerable.Range(0, matrix.GetLength(1))
                .Select(x => matrix[rowNumber, x])
                .ToArray();
    }

    public static void Main()
    {
        var array = new [,]
            {
                {'j', 'j', 'j', 'j', 'j'},
                {'j', 'j', 'j', 'j', 'j'},
                {'j', 'j', 'j', 'j', 'j'},
                {'a', 'j', 'j', 'j', 'j'},
            };
        char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
        var lastRowIndex = array.GetLength(0) - 1;
        var lastRow = GetRow(array, lastRowIndex);
        int vowelCount = lastRow.Count(x => vowels.Contains(x));

        if(vowelCount == 0) Console.WriteLine("There is no vowel in matrix's last row");
        else if(vowelCount > 0) Console.WriteLine("There are vowel(s) in matrix's last row");       
    }
}
...