Top.Mail.Ru
Ответы

Ребят, есть вот код, он мне все буквы считает, а надо ток строчные, что делать, как исправить?

123456789101112131415161718192021222324252627282930
 class Program 
{ 
    static void Main() 
    { 
        string inputString = "ййЙЙqqqQQQ"; 
 
        int count = CountLowercaseLetters(inputString); 
 
        Console.WriteLine("Общее количество строчных латинских и русских букв: " + count); 
    } 
 
    static int CountLowercaseLetters(string inputString) 
    { 
        char[] Latin = "abcdefghijklmnopqrstuvwxyz".ToCharArray(); 
        char[] Russian = "абвгдежзийклмнопрстуфхцчшщьыъэюя".ToCharArray(); 
 
        int count = 0; 
 
        foreach (char c in inputString) 
        { 
            if (Array.IndexOf(Latin, char.ToLower(c)) != -1 || 
            Array.IndexOf(Russian, char.ToLower(c)) != -1) 
            { 
                count++; 
            } 
        } 
 
        return count; 
    } 
} 
По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
12345678910111213
 using System; 
using System.Linq; 
 
class Program 
{ 
    static void Main() 
    { 
        string inputString = "ййЙЙqqqQQQ"; 
        int count = inputString.Count(char.IsLower); 
        Console.WriteLine("Общее количество строчных латинских и русских букв: " + count); 
    } 
} 
 
Аватар пользователя
Оракул

возможно дело в том, что у тебя используется функция ToLower

Аватар пользователя
Профи

Чтобы исправить код и считать только строчные буквы, нужно изменить условие в цикле. Вместо того, чтобы сравнивать индексы в массивах Latin и Russian, можно сравнивать символы напрямую с помощью методов char.IsLower() и char.IsLetter():

static int CountLowercaseLetters(string inputString)
{
int count = 0;

foreach (char c in inputString)
{
if (char.IsLower(c) && char.IsLetter(c))
{
count++;
}
}

return count;
}
Теперь код будет считать только строчные буквы латинского и русского алфавита.