Другие языки программирования и технологии

Как отдельно подсчитать количество русских букв и английских букв в строке массива???

Вообще мне нужно сделать вот это, но я не знаю как считать символы в строке: Для каждой компоненты: если количество латинских символов в строке превышает количество русских символов, удвоить значение поля Y.
// CodePage: 1251
BYTE g_Table[256]=
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
};

BOOL IsLatin(char ch)
{
return (g_Table[(BYTE)ch] & 1) != 0;
}

BOOL IsCyrillic(int ch)
{
return (g_Table[(BYTE)ch] & 2) != 0;
}

void TestString(const char *pString)
{
if (pString)
{
int All, Latin, Cyrillic;
for (All = 0, Latin = 0, Cyrillic = 0, *pString; pString++)
{
All++;
if (IsLatin(*pString))
{
Latin++;
}
if (IsCyrillic(*pString))
{
Cyrillic++;
}
}
printf("All = %d, Latin = %d, Cyrillic = %d\n", All, Latin, Cyrillic);
}
else
{
printf("Invalid pointer\n");
}
}
Ерболат Мухаммедкаримов
Ерболат Мухаммедкаримов
21 360
Лучший ответ
на ++ есть функция strlen() возвращает общее количесво символов в массиве
тебе надо общее количесво, а потом в цикле сравнить все что у тебя есть в массиве с интервалом латинских букв (кодов 16Х)
и соответственно подсчитать
потом общее колво минус латинские все что осталось это знаки препинания и русские буквы

Похожие вопросы