1. C++ / Говнокод #4724

    +155

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    void XmlElementHandler::startElement(
                        const XMLCh* const uri,
                        const XMLCh* const localname,
                        const XMLCh* const qname,
                        const XERCES_CPP_NAMESPACE_QUALIFIER Attributes& attrs
                        )
    {
      static XmlContext *context = XmlContext::getInstance();
      static XmlParser *parser = XmlParser::getInstance();

    оптимизируем обращения к синглтонам. потому что одной невидимой глобальной переменной явно не достаточно. вот такое щасце в 30+ методах на реализации интерфейса к Xerces-C.

    Dummy00001, 23 Ноября 2010

    Комментарии (14)
  2. C++ / Говнокод #4723

    +179

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if(
        (s.Find("/0")!=-1)||
        (s.Find("Log10(-")!=-1)||
        (s.Find("Log10(0")!=-1))//stupid user error
    {
    }

    Проверка, есть ли в формуле, введенной пользователем, деление на 0, логарифм от отрицательного числа или логарифм от нуля. Стиль и комментарии автора сохранены.

    Shumway, 23 Ноября 2010

    Комментарии (13)
  3. C++ / Говнокод #4722

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    //Set different text depending on how long on progressbar progress is
    if (dwStepPercent < 25)
        byText=0;
    else if (dwStepPercent < 50)
        byText=1;
    else if (dwStepPercent < 75)
        byText=2;
    else
        byText=3;

    Отличный способ не делить.

    Shumway, 23 Ноября 2010

    Комментарии (2)
  4. C++ / Говнокод #4719

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    /* use <first> of a [std::pair] */
    template<typename _type_, typename _pred_>
    struct use_first {
    	use_first(_type_ val, _pred_ pred) { value = val; predicate = pred; }
    	
    	template<typename _first_type_, typename _second_type_>
    	bool operator()(const std::pair<_first_type_, _second_type_> &pr)
    	{
    		return predicate(pr.first, value);
    	}
    
    private:
    	_type_ value;
    	_pred_ predicate;
    };
    
    /* factory function: use it to init a [use_first] object */
    template<typename _type_, typename _pred_>
    use_first<_type_, _pred_> make_use_first(_type_ value, _pred_ pred)
    {
    	return use_first<_type_, _pred_>(value, pred);
    }
    
    /* usage of [use_first] */
    std::vector< std::pair<int, int> > lol;
    std::vector< std::pair<int, int> >::iterator = std::find_if(lol.begin(), lol.end(), make_use_first(0, std::equal_to()));

    собственно была проблема в том, что в контейнерах(например std::vector, std::deque) хранятся пары(std::pair) и зачастую нужно организовать какие-либо действия либо по первому(first), либо по второму(second) члену из std::pair.
    приведен код только для first, ибо код для second немного похож

    в итоге получилось сие поделие, а еще я люблю обмазаться несвежим....

    Govnoeb, 23 Ноября 2010

    Комментарии (3)
  5. C++ / Говнокод #4708

    +145

    1. 1
    2. 2
    3. 3
    [Mon Nov 22 15:52:46 2010] [emerg] [client 217.69.133.30] mod_bartertown_translate: Fatal: STL: cannot find file in include directories `/`
    жгут
    написали бы еще "не могу открыть что-то что должно лежать в '/'"

    программа не смогла открыть файл и написала в логи..

    m0r1k, 22 Ноября 2010

    Комментарии (1)
  6. C++ / Говнокод #4704

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    GetFirstFieldWithName(CString szElemName)
    {
        int i = -1;
    
        for (i = 0; i < m_FieldValues.GetSize(); i ++)
        {
            if (m_FieldValues[i]->m_szElemName == szElemName)
                break;
        }
    
        if ((i > 0) && (i < m_FieldValues.GetSize()))
            return m_FieldValues[i];
        else
            return NULL;
    }

    Shumway, 22 Ноября 2010

    Комментарии (6)
  7. C++ / Говнокод #4686

    +166

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    JNIEXPORT jstring JNICALL _Java_com_fl_nat_Status_listProcessess0(JNIEnv *env, jobject obj) {
        char format[1024*128];
        char name[128];
        
        unsigned long procs[1024], needed, ret;
        if(!EnumProcesses(procs, sizeof(procs), &needed)) return (*env)->NewStringUTF(env, "");
    
        ret = needed / sizeof(unsigned long);
        unsigned int i = 0;
        for(; i < ret; i++) {
            if(procs[i] == 0) continue;
    
            HANDLE hproc = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, procs[i]);
            GetModuleBaseName(hproc, 0, name, 128);
    
            strncat(format, name, strlen(name));
            strncat(format, ",", 1);
            sprintf(name, "%i", procs[i]);
            strncat(format, name, strlen(name));
            strncat(format, ";", 1);
    
            CloseHandle(hproc);
        }
    
        return (*env)->NewStringUTF(env, format);
    }

    к говнокоду №4685

    итак, эта программа (JNI на C++ и "клиентская" часть на Java) создают список процессов таким извращенным образом:
    C++ создает строку вида "имяпроцесса1,идпроцесса1;имяпроцесса2,и дпроцесса2;", после чего жабо-код парсит эту строку, переводя её в массив обьектов SystemProcess

    danilissimus, 19 Ноября 2010

    Комментарии (18)
  8. C++ / Говнокод #4683

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    if (mode == MASTER)
    	Dev_Mode = MASTER;
    else
    	Dev_Mode = SLAVE;

    Vanuan, 19 Ноября 2010

    Комментарии (3)
  9. C++ / Говнокод #4669

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    for(i=0;i<=15;i++) {
     o=Odd(N[i]);s=Simple(N[i]);//Odd-проверка на нечётность всех цифр, Simple-на простое число
     if((o&&s)||(N[i]==3||N[i]==5||N[i]==7)) 
    {
    }
     else cprintf("%d ",N[i]); //и вот тут замкнуло...но по другому никак)
     if(i>n+4) goto exit;//потерялись 4 элемента...
     }

    лаба..сдам на следующей неделе, в надежде что у препода произойдёт переполнение и поставит, всё-таки всё работает =)

    aelaa, 17 Ноября 2010

    Комментарии (7)
  10. C++ / Говнокод #4628

    +183

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    bool or(bool x1, bool x2) {
    	if (x1 || x2)
    		return true;
    	else
    		return false;
    }

    Я РЕАЛЬНО видел такой код, написанный на полном серьёзе.

    Alever, 14 Ноября 2010

    Комментарии (40)