Prolific
11.05.2016, 21:12
Всем привет. Спустя очень много времени разобрался с побитовыми операторами (можете меня поздравить :yahoo:) и подумал что бы сделать. У Шилдта подсмотрел идейку и написал функцию.
Суть в том что заглавные и прописные буквы отличаются лишь одним битом (6-ым), соответственно его можно обнулять и наоборот тем самым изменять символ.
В данной функции заглавные буквы пишутся после точки и в начале строки.
stock CorrectString(string[])
{
new i, next_caps = 1;
do
{
switch(string[i])
{
case '.':
{
next_caps = 1;
continue;
}
case 'A'..'Z', 'a'..'z', 'А'..'Я', 'а'..'я':
{
if(next_caps)
{
string[i] &= 0b11011111;
next_caps = 0;
}
else string[i] |= 0b100000;
continue;
}
}
}while(string[i++] != '\0');
}
Суть в том что заглавные и прописные буквы отличаются лишь одним битом (6-ым), соответственно его можно обнулять и наоборот тем самым изменять символ.
В данной функции заглавные буквы пишутся после точки и в начале строки.
stock CorrectString(string[])
{
new i, next_caps = 1;
do
{
switch(string[i])
{
case '.':
{
next_caps = 1;
continue;
}
case 'A'..'Z', 'a'..'z', 'А'..'Я', 'а'..'я':
{
if(next_caps)
{
string[i] &= 0b11011111;
next_caps = 0;
}
else string[i] |= 0b100000;
continue;
}
}
}while(string[i++] != '\0');
}