PDA

Просмотр полной версии : [Вопрос] Как сделать проверку на 3 заглавных буквы ?



roma282282
17.03.2014, 19:43
for(new i = 0; i < strlen(string); i++)
{
if(string[i] > 64 && string[i] < 91 ) string[i] += 32;// буквы A-Z
else if(string[i] > 191 && string[i] < 224 ) string[i] += 32;// быквы А-Я
else if(string[i] == 168) string[i] = 184; // буква Ё
}

roma282282
17.03.2014, 22:00
***

Daniel_Cortez
19.03.2014, 19:07
const MIN_CAPS_SYMBOLS = 4; // минимальное кол-во символов капсом, при котором нужно преобразовать содержимое строки
for(new i=0,caps=0; ;++i) // перебирать каждый символ в строке
{
switch(string[i])
{
case '\0': // если нуль-символ (конец строки) - выйти
break;
case 'A'..'Z', 'А'..'Я', 'Ё': // если заглавная буква
{
caps++; // увеличить счётчик капса
if(caps == MIN_CAPS_SYMBOLS) // если счётчик равен мин. кол-ву символов капсом для исправления
{
for(i=0; ; ++i) // с самого начала перебирать каждый символ для преобразования
{
switch(string[i])
{
case 'A'..'Z':
string[i] += 'a'-'A';
case 'А'..'П':
string[i] += 'а'-'А';
case 'Р'..'Я':
string[i] += 'р'-'Р';
case 'Ё':
string[i] = 'ё';
case '\0': // если конец строки - закончить преобразование и выйти из обоих циклов
break;
}
}
break;
}
}
}
}
Будет преобразовывать символы в нижний регистр, если в строке 4 и более заглавных буквы. 3 не советовал бы вставить, т.к. на многих RP-серверах могут быть аббревиатуры типа CNN, ФБР и т.п.

roma282282
20.03.2014, 22:47
const MIN_CAPS_SYMBOLS = 4; // минимальное кол-во символов капсом, при котором нужно преобразовать содержимое строки
for(new i=0,caps=0; ;++i) // перебирать каждый символ в строке
{
switch(string[i])
{
case '\0': // если нуль-символ (конец строки) - выйти
break;
case 'A'..'Z', 'А'..'Я', 'Ё': // если заглавная буква
{
caps++; // увеличить счётчик капса
if(caps == MIN_CAPS_SYMBOLS) // если счётчик равен мин. кол-ву символов капсом для исправления
{
for(i=0; ; ++i) // с самого начала перебирать каждый символ для преобразования
{
switch(string[i])
{
case 'A'..'Z':
string[i] += 'a'-'A';
case 'А'..'П':
string[i] += 'а'-'А';
case 'Р'..'Я':
string[i] += 'р'-'Р';
case 'Ё':
string[i] = 'ё';
case '\0': // если конец строки - закончить преобразование и выйти из обоих циклов
break;
}
}
break;
}
}
}
}
Будет преобразовывать символы в нижний регистр, если в строке 4 и более заглавных буквы. 3 не советовал бы вставить, т.к. на многих RP-серверах могут быть аббревиатуры типа CNN, ФБР и т.п.
Спасибо, закрывайте тему.