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

    +8

    1. 1
    2. 2
    #define I_HATE_MACRO2(BEGIN__, END__) BEGIN__##END__
    #define CONCAT_MACRO(BEGIN__, END__) I_HATE_MACRO2(BEGIN__,END__)

    LispGovno, 28 Февраля 2013

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

    +19

    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
    std::vector<int> data;
    std::vector<int> indexes;
    
    // ...
    
    for (int i = 0; i < data.size(); ++i) {
    	if (data[i] == to_remove) {
    		indexes.push_back(i);
    	}
    }
    for (int i = 0; i < indexes.size(); ++i) {
    	data.erase(data.begin() + i);
    }

    "Эффективное" удаление элементов из вектора. Об <algorithm> человек не слышал...

    Cpp, 25 Февраля 2013

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

    +33

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    std::vector<int> data;
    	// ...
    	for (int i = 0; i < data.size(); ++i) {
    		int item = data.begin()[i];
    		// ...
    	}

    Cpp, 22 Февраля 2013

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

    +8

    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
    //список строк
    QStringList rows_list = text.split("\n");
    
    uint32_t row=0;
    uint32_t col=0;
    for(QStringList::iterator itR=rows_list.begin(); itR!=rows_list.end(); itR++,row++)
    {
       QStringList columns_list=itR->split(";");
    
       col=0;
       for(QStringList::iterator itC=columns_list.begin(); itC!=columns_list.end(); itC++,col++)
       {
          //*itC,row,col
       }
    }

    Человек осилил итераторы в с++...
    (для тех, кто не в теме - QStringList имеет доступ по индексу за константное время)
    А еще мне нравятся uint32_t вместо int или, на худой конец, quint32.

    ABBAPOH, 22 Февраля 2013

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

    +17

    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
    class Test
    {
      public:
        Test() : f(&Test::f0), f0(&Test::f1), f1( &Test::f2 ) {}
        float (  Test::* const Test::* const Test::* const f)();
      private:
        float ( Test::* const Test::* const f0)();
        float ( Test::* const f1)() ;
        float f2() { return 0; }
    };
    
    Test t;
    cout << (t.*(t.*(t.*(t.f))))();

    LispGovno, 21 Февраля 2013

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

    +28

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if ( _It->m_sOpenText.substr( 0, 3 ) == "<tr" ||
    		 _It->m_sOpenText.substr( 0, 3 ) == "<th" ||
    		 _It->m_sOpenText.substr( 0, 3 ) == "<td" ||
    		 _It->m_sOpenText.substr( 0, 6 ) == "<thead" ||
    		 _It->m_sOpenText.substr( 0, 6 ) == "<tbody" ||
    		 _It->m_sOpenText.substr( 0, 6 ) == "<tfoot" ||
    		 _It->m_sOpenText.substr( 0, 8 ) == "<caption" ||
    		 _It->m_sOpenText.substr( 0, 4 ) == "<col" ||
    		 _It->m_sOpenText.substr( 0, 9 ) == "<colgroup" )
    		return; // TODO: я пишу ТАКОЙ код, убейте меня...

    Продолжаем неделю свитчей  — HTML-препроцессор!

    Yuuri, 19 Февраля 2013

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

    +80

    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
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    /* Попытка обьединить четыре  цикла в один.
    	Первый - Присвоение элементам массива значения.
    	Второй - Поиск минимального значения.
    	Третий - Поиск максимального значения.
    	Четвертый - Вывод содержимого массива.
    */
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    
    int main()
    {
    	int array[100];
    	int flag;
    	int min = 0;
    	int max = 0;
    
    	for (flag=0;flag<100;flag++){					   
    		array[flag]=rand();
    		
    		if ( ! min && ! max){	   //Инициализация переменных, для первой итерации.
    		max = array[0];
    		min = array[0];
    		}
    
    		if (array[flag] >=max) max = array[flag];
    		
    		if (array[flag] <= min) min = array[flag];
    		
    		cout << array[flag] << "\n";
    	}
    	
    	cout << "\nМаксимальное значение: " << max;	
    
    	cout << "\nМинимальное значение: "  << min << '\n';
    	
    	return 0;
    }

    Писал я, пытаясь переделать пример из книжки, в котором для этой же задачи использовалось 4 цикла.
    Просьба обьективно обгадить сей код, дабы мне было над чем подумать.

    P.S только учусь.

    shim, 18 Февраля 2013

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

    +36

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    #include <iostream>
    int main() 
    { 
        system("calc"); 
    }

    Калькулятор на C++? Да пожалуйста.

    zebraplus, 16 Февраля 2013

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

    +24

    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
    int MyForm::modelId(int button, bool rarefied, bool grouped)
    {
        if (button == 4)
            return 9;
        else
        {
            Q_ASSERT(button == 1 || button == 2 || button == 3);
            if (!rarefied)
                return (button - 1);
            else
            {
                if (!grouped)
                    return 3 + (button - 1);
                else
                    return 6 + (button - 1);
            }
        }
    }

    Энумы? Не, не слышал.

    ABBAPOH, 14 Февраля 2013

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

    +16

    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
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    char tab1[22][8]={"program","var","begin","end","int","float","bool","if","then","else","for","to","do","while","readln","writeln","as","||","!","&&","true","false"};
    char tab2[18][3]={"==","<",">","+","-","*","/","(",")",".",",",";"," ","!=","<=",">=",10};
    
    //Много кода
    
    if(!strcmp("program",st.top())&&!strcmp("program",&mas[j][0]))
    	{
    		st.pop();
    		j++;
    	}
    	else
    		if(!strcmp("var",st.top())&&!strcmp("var",&mas[j][0]))
    		{
    			st.pop();
    			j++;
    		}
    		else
    			if(!strcmp("begin",st.top())&&!strcmp("begin",&mas[j][0]))
    		{
    			st.pop();
    			j++;
    		}
    		else
    			if(!strcmp("end",st.top())&&!strcmp("end",&mas[j][0]))
    		{
    			st.pop();
    			j++;
    		}
    		else
    			if(!strcmp("int",st.top())&&!strcmp("int",&mas[j][0]))
    		{
    			st.pop();
    			j++;
    		}
    		else
    			if(!strcmp("float",st.top())&&!strcmp("float",&mas[j][0]))
    		{
    			st.pop();
    			j++;
    		}
    
    //Еще строк 200 такого

    Abbath, 14 Февраля 2013

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