Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для Prolific
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    116
    Репутация:
    14 ±

    Расстановка заглавных букв в строке

    Всем привет. Спустя очень много времени разобрался с побитовыми операторами (можете меня поздравить ) и подумал что бы сделать. У Шилдта подсмотрел идейку и написал функцию.
    Суть в том что заглавные и прописные буквы отличаются лишь одним битом (6-ым), соответственно его можно обнулять и наоборот тем самым изменять символ.
    В данной функции заглавные буквы пишутся после точки и в начале строки.

     Собственно код
    PHP код:
    stock CorrectString(string[])
    {
        new 
    inext_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');

    Последний раз редактировалось Prolific; 11.05.2016 в 21:45.

  2. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    На самом деле добавление/вычитание из кода символа ничем не хуже, чем побитовое сложение/умножение. По крайней мере, в ассемблере под x86 эти операции настолько простые, что все они занимают лишь 1 процессорный такт. В абстрактной машине AMX вряд ли что-то сильно отличается в плане производительности (в версии интерпретатора для GCC точно, в ANSI C версии производительность во многом зависит от используемого компилятора, т.к. там нельзя сделать таблицу переходов).
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  3. #3
    Аватар для Prolific
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    116
    Репутация:
    14 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    На самом деле добавление/вычитание из кода символа ничем не хуже, чем побитовое сложение/умножение. По крайней мере, в ассемблере под x86 эти операции настолько простые, что все они занимают лишь 1 процессорный такт. В абстрактной машине AMX вряд ли что-то сильно отличается в плане производительности (в версии интерпретатора для GCC точно, в ANSI C версии производительность во многом зависит от используемого компилятора, т.к. там нельзя сделать таблицу переходов).
    Зато понты))

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •