Другие языки программирования и технологии
Как отдельно подсчитать количество русских букв и английских букв в строке массива???
Вообще мне нужно сделать вот это, но я не знаю как считать символы в строке: Для каждой компоненты: если количество латинских символов в строке превышает количество русских символов, удвоить значение поля 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");
}
}
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");
}
}
на ++ есть функция strlen() возвращает общее количесво символов в массиве
тебе надо общее количесво, а потом в цикле сравнить все что у тебя есть в массиве с интервалом латинских букв (кодов 16Х)
и соответственно подсчитать
потом общее колво минус латинские все что осталось это знаки препинания и русские буквы
тебе надо общее количесво, а потом в цикле сравнить все что у тебя есть в массиве с интервалом латинских букв (кодов 16Х)
и соответственно подсчитать
потом общее колво минус латинские все что осталось это знаки препинания и русские буквы
Похожие вопросы
- дана строка содержащая латинские буквы, русские буквы и цифры. Подсчитать количество русских букв и цифр в данной строке
- С++. Элементы массива задаются с клавиатуры. Подсчитать количество элементов массива, являющихся трехзначным числом.
- 1. как в строке выбрать все русские буквы по одному разу? 2.как заполнить массив по правилу латинского квадрата?
- Ассемблер (TASM). Нужно ввести строку и с помощу команд обработки цепочек подсчитать кол-во русской буквы "в" в строке
- Дана матрица символов. Подсчитать количество строк, в которых букв больше, чем цифр.
- Напишите программу для С++, которая заменяет в символьной строке все буквы a на буквы b, буквы A на буквы B ...
- 2. Отсортировать массив из n чисел и подсчитать количество уникальных чисел в массиве. на паскале
- как подсчитать количество слов в строке разделённым больше чем одним пробелом(Delphi)
- Указатель на строку - массив, как это?
- MySQL русские буквы не работают