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

    Статус
    Оффлайн
    Регистрация
    11.08.2014
    Сообщений
    19
    Репутация:
    1 ±

    Вычисление размера string

    Интересует принцип вычисления размера string.
    Конкретней интересует это вычисление
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    PHP код:
        static const
            
    fmt_str0[] = "Координаты: X = %8.2f, Y = %8.2f, Z = %8.2f",
            
    fmt_str1[] = "Угол поворота: %8.2f°",
            
    fmt_str2[] = "Интерьер: %d, вирт. мир: %d";
        
    // подсчёт максимальной длины для каждой
        // из строк после форматирования
        
    const
            
    size0 sizeof(fmt_str0)+(-5+11)*3,
            
    size1 sizeof(fmt_str1)-5+11,
            
    size2 sizeof(fmt_str2)+(-2+11)*2;
       
    // запись наибольшей длины в макрос size
        // (это и будет макс. размер переменной string)
        #if    size0>size1
            #define    size    size0
        #else
            #define    size    size1
        #endif
        #if    size2>size
            #undef    size
            #define    size    size2
        #endif
        // размер подсчитан, теперь можно
        // объявить и саму переменную
        
    new string[size]; 

  2. #2
    Аватар для Giffka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.08.2014
    Сообщений
    19
    Репутация:
    1 ±
    Подниму. Очень интересно.

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

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    PHP код:
    static const 
            
    fmt_str0[] = "Координаты: X = %8.2f, Y = %8.2f, Z = %8.2f"
            
    fmt_str1[] = "Угол поворота: %8.2f°"
            
    fmt_str2[] = "Интерьер: %d, вирт. мир: %d"
    Что и где:
    fmt_str0[] - строка с тремя параметрами
    fmt_str1[] - строка с одним параметром
    fmt_str2[] - строка с двумя параметрами
    8.2 - форматирование значения аргумента параметра, 8 - ширина, 2 - количество цифр после точки.


    PHP код:
    const 
            
    size0 sizeof(fmt_str0)+(-5+11)*3
            
    size1 sizeof(fmt_str1)-5+11
            
    size2 sizeof(fmt_str2)+(-2+11)*2
    Почему так:
    sizeof(fmt_str0) - вычисляет общую длину строки, +(-5+11)*3 - добавочная длина для значения трех параметров X,Y,Z.
    sizeof(fmt_str1) - вычисляет общую длину строки, +-5+11 - добавочная длина для значения одного параметра A.
    sizeof(fmt_str2) - вычисляет общую длину строки, +(-2+11)*2 - добавочная длина для значения двух параметров int, world.

    Допустим что у нас следующие значение:

    fmt_str0 = 35
    fmt_str1 = 30
    fmt_str2 = 25

    С помощью кода указанного ниже мы вычисляем наибольшее число используя транзитивность порядка, по формуле a > b > c
    PHP код:
    #if    size0>size1 
            #define    size    size0 
        #else 
            #define    size    size1 
        #endif 
        #if    size2>size 
            #undef    size 
            #define    size    size2 
        #endif 
    И на выходе получаем наибольшее число, т.е. size = 35;
    После чего объявляем массив:
    PHP код:
    new string[size]; 
    Последний раз редактировалось NewGreen; 22.10.2014 в 16:26.

  4. 3 пользователя(ей) сказали cпасибо:
    Aurelius (12.03.2021) Daniel_Cortez (22.10.2014) DmX (24.10.2014)
  5. #4
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    + очень полезно когда работаешь с MySQL.

 

 

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

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

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

Ваши права

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