1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

[Игра] Test your skill

Тема в разделе 'Кодинг/Собственные решения', создана пользователем Synth (LM), 18 янв 2012.

  1. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    171
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Я тут решил сделать тест на знание c++, c#, c, но понял что глупо - интернет то в свободном доступе -_-
    Но все равно, некоторые вопросы сложно найти незнающему. Так вот, дорогие форумчане, а также те, кто отличаются от остальных тем, что могут приносить пользу больше в разы на этом форуме, программируя на языках семейства C, я предлагаю вам отвечать на мои, а может быть и не только, каверзные вопросы тематики Ghost Programming (перегрузил предложение, ага :facepalm: ).

    Итак, вопросы:

    [IMG]
  2. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    Re: [Игра] Почему?

    Синтаксис с# шарпа ближе к яве, на сколько я знаю он даже не компилируемый язык, поэтому ставить их в одну полку с си не стоит)
    А си вообще не имеет классов, поэтому это обозначение там никогда не использовалось.
    Вопросы из разряда стилей кодинга очень спорны и у каждого обозначение m_ может иметь свои значения, но в случае с ghost++ m_ применяется именно как member (член класса).
  3. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    171
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Re: [Игра] Почему?

    Да, упрощать код можно любыми префиксами, согласно Венгерской нотации, "m_" это действительно принадлежность к классу. У этого есть свои плюсы и минусы.
    Подробнее тут:
    http://ru.wikipedia.org/wiki/Венгерская_нотация

    PS: Фейк следущий не отвечает ^^
  4. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    Re: [Игра] Почему?

    та ну, тут все линтяи( кинь хоть пачку вопросов мб подскажу :metal:
  5. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Re: [Игра] Почему?

    он может :metal:
  6. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Re: [Игра] Почему?

    Мб потому, что при коннекте к mysql серверу требуется залогинится перед запросом, а сам запрос к БД может быть по продолжительности меньше времени логина. В этом случае не будет тратится время на повторный логин. Если таких запросов много, то это имеет смысл, в какой то мере оптимизация.
  7. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    171
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Re: [Игра] Почему?

    Это в идеале. На самом деле иначе - бот создает кучу тредов между базой и собой и НЕ закрывает их до выключения бота, а также не юзает их (некоторых) - создает всё новые и новые треды. Что говорить об оптимизации, если в списке процессов MySQL висит порядка 40 строк за сутки.

  8. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
  9. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Re: [Игра] Почему?

    Ну если я правильно понял тот пост от Варлока, то там недоработка кода тоже играет свою роль.
    По поводу простого - вроде попытка изменить константу, компилятор должен взбесится на такое.
  10. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    171
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Re: [Игра] Почему?

    Верно. Подумай 2 мб?)
  11. Puwok Знакомый модера

    Сообщения:
    85
    Спасибы:
    0
    Сборка бота GHost:
    brt 1.8.8
    Дата начала использования бота:
    00.00.000
    Re: [Игра] Почему?

    :bIbIbIblya:
  12. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    А можно такой вопрос (по второму сложному):
    Почему функция в качестве результата функция возвращает строковый тип данных, который впоследствии будет приводиться к uint, почему бы сразу не «заточить» функию на вывод целочисленный беззнаковый?
  13. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    Ссылка на строку возвращаемую с функции?
  14. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    для задания мб?
  15. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    171
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Это не есть ответ на вопрос.
    Такой случай бывает, если идет парсинг файла .txt например, и использование ввиде строки в основном нужно для отображения в консоль без конвектирования. А тут понадобилось сделать допустим какую нибудь функцию, которая работает только с целочисленным беззнаковым типом. Просто чтобы сократить код (а именно от парсирования txt файла), я сократил до этих значений.

    Ты это к чему? К ответу?
  16. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
  17. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    171
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Продемонстрируй как должно было быть и напиши полный открытый ответ.
    PS: Не посылать - все для людей делаем :buba:
  18. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    Код:
    int32_t UTIL_ToInt32( string &s )
    {
        uint32_t result;
        stringstream SS;
        SS << s;
        SS >> result;
        return result;
    }
    // Подсказка: Ошибка снизу :)
    // PS: тут не в оптимизации ошибка.
    
    string  Func( string name )
    {
        transform( name.begin( ), name.end( ), name.begin( ), (int(*)(int))tolower );
    
        for( uint32_t i = 0; i != m_Div.size(); i++ ) //m_Div - вектор имен игроков string();
        {
            
            if( m_Div[i] == name )
            {
                
                return "1";
            }
        }
        return "0";
    }
    string username = "Someone";
    uint32_t ModuleInt = 0;
    ModuleInt = UTIL_ToUInt32(Func(username));
    сейчас увидил, что есть функция UTIL_ToInt32 а используешь UTIL_ToUInt32
    + в UTIL_ToInt32 используется тип uint32

    Но думаю еще, что возможно будет такой момент когда строка возвращаемая с функции Func(username) уже не будет существовать, но ссылка на нее будет передана, хотя компилятор и должен сделать все правильно, я бы все таки использовал временную переменную
    Код:
    string username = "Someone";
    uint32_t ModuleInt = 0;
    string tmstr(Func(username));
    ModuleInt = UTIL_ToInt32(tmstr);
    ps^ не юзай пхп код, он не читабелен после этого(
  19. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    171
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Конечно ты прав:
    1. Ссылка не может быть нулевой.
    2. Ссылка не может являться временным объектом.

    Код:
    string tmpstr = Func(username);
    
    if( !tmpstr.empty( ) )
    ModuleInt = UTIL_ToUInt32(tmpstr);
    То что я там затупил с ToInt и ToUInt роли не играло - компилятор просто бы выругнулся, что я юзаю неиндусский код.
  20. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    171
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Следущий вопрос для "младешего" поколения :)

    Зачем нужен вызов MySQLEscapeString в этом коде? Фейк и вайпер молчат -_-
    Код:
    string MySQLEscapeString( void *conn, string str )
    {
    	if (str.length()==0)
    		return str;
    	char *to = new char[str.size( ) * 2 + 1];
    	unsigned long size = mysql_real_escape_string( (MYSQL *)conn, to, str.c_str( ), str.size( ) );
    	string result( to, size );
    	delete [] to;
    	return result;
    }
    user = 'BOG_"."_DOTbI';
    string EscUser = MySQLEscapeString( conn, user );