Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Дима Травин Профи (726), на голосовании 6 месяцев назад
 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;
}
}
Голосование за лучший ответ
Стёпа Туркин Профи (953) 7 месяцев назад
Чтобы исправить код и считать только строчные буквы, нужно изменить условие в цикле. Вместо того, чтобы сравнивать индексы в массивах 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;
}
Теперь код будет считать только строчные буквы латинского и русского алфавита.
RatÆCat Оракул (51745) 7 месяцев назад
возможно дело в том, что у тебя используется функция ToLower
Дима ТравинПрофи (726) 7 месяцев назад
да, это, но я на что менять не знаю
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (258857) 7 месяцев назад
 using System; 
using System.Linq;

class Program
{
static void Main()
{
string inputString = "ййЙЙqqqQQQ";
int count = inputString.Count(char.IsLower);
Console.WriteLine("Общее количество строчных латинских и русских букв: " + count);
}
}
Похожие вопросы