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

    +161

    1. 1
    2. 2
    width ? width-- : width;
    height ? height-- : height;

    Ахуй нехуевый. Не говнокод, наверно, но всё же.

    Altravert, 23 Июля 2010

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

    +148

    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
    #include <cstdio>
    #include <memory.h>
    
    #define maxn 18
    
    char c[maxn][maxn];
    int d[1 << maxn];
    
    int main()
    {
      freopen("network.in", "rt", stdin);
      freopen("network.out", "wt", stdout);
      
      int n; scanf("%d", &n);
      for (int i = 0; i < n; i++)
        scanf("%s", c[i]);
        
      memset(d, 0, sizeof(d));
      
      for (int k = 0; k < (1 << n); k++)
        for (int i = 0; i < n; i++)
          for (int j = 0; j < n; j++)
            if (c[i][j] == 'Y' && k & (1 << i) && k & (1 << j) && d[k - (1 << i) - (1 << j)] + 2 > d[k])
              d[k] = d[k - (1 << i) - (1 << j)] + 2;
              
      int max = 0;
      for (int i = 0; i < (1 << n); i++)
        if (d[i] > max)
          max = d[i];
          
      printf("%d\n", max);
      
      return 0;
    }

    ACM-задачка на динамику по подмножествам.
    Кто поймет, тому 5 ;)

    ystepanov, 22 Июля 2010

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

    +152

    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
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    template<typename T> class myVector {
    private:
    	T* data; // Указатель на массив с данными
    	int count; //Кол-во элементов в векторе
    	T maxv, minv; // Максимальный и минимальный элементы
    	void quicksort(T a[], const int& leftarg, const int& rightarg) const // Сортировочка
    	{
    		if (leftarg < rightarg) {
    			T pivotvalue = a[leftarg];
    			int left = leftarg - 1;
    			int right = rightarg + 1;
    			for(;;) {
    
    				while (a[--right] > pivotvalue);
    				while (a[++left] < pivotvalue);
    				if (left >= right) break;
    				T temp = a[right];
    				a[right] = a[left];
    				a[left] = temp;
    			}
    			int pivot = right;
    			quicksort(a, leftarg, pivot);
    			quicksort(a, pivot + 1, rightarg);
    		}
    	}
    public:
    	myVector() : count(0), data(0), maxv(0), minv(0) // Я хз какие дефолтные значения задавать maxv и minv
    	{
    	}
    	~myVector() //Деструктор
    	{
    		if (data)
    			delete [] data;
    	}
    	void operator<<(const T &Value) //Оператор для добавления элемента в вектор
    	{
    		data = (T*)realloc(data, ++count * sizeof(T));
    		data[count-1] = Value;
    		if (maxv < Value) // Чтобы не искать максимальный и минимальный элемент, чекаем значение при добавлении в массив
    			maxv = Value;
    		else 
    			if (minv > Value)
    				minv = Value;
    	}
    	T& operator[](const int &Index)//Оператор [] для доступа по индексу
    	{
    		if (Index >= count) throw 1;
    		return data[Index];
    	}
    	void orderAsc(T *result) const //Сортировка по возрастанию
    	{
    		if (!data) throw 1;
    		memcpy(result, data, sizeof(T) * count);
    		quicksort(result, 0, count - 1);
    	}
    	void orderDesc(T *result) const
    	{
    		if (!data) throw 1;
    		memcpy(result, data, sizeof(T) * count);
    		quicksort(result, 0, count - 1);
    		int swap, b = count;
    		for(int a = 0; a < --b; a++) {
    			swap = result[a];  result[a] = result[b]; result[b] = swap; 
    		}
    	}
    	T max() const
    	{
    		if (!data) throw 1;
    		return maxv;
    	}
    	T min() const
    	{
    		if (!data) throw 1;
    		return minv;
    	}
    };
    int main()
    {
    	myVector<int> v;
    	for (int i = 0; i < 10; i++)
    		v << rand() % 100; // Заполняем рандомными элементами
    	for (int i = 0; i < 10; i++)
    		printf("%d ", v[i]); // Выводим их
    	printf("\n");
    	int *arr = new int[10];
    	v.orderAsc(arr); //Сортируем по возрастанию
    	for (int i = 0; i < 10; i++)
    		printf("%d ", *(arr + i)); //Выводим результат
    	printf("\n");
    	v.orderDesc(arr); //Сортируем по убыванию
    	for (int i = 0; i < 10; i++)
    		printf("%d ", *(arr + i));//Выводим результат
    	printf("\n%d\n%d", v.max(), v.min()); //Выводим максимальный и минимальный элементы
    	delete [] arr;
    }

    Типа вот внезапно так захотелось создать простейший класс вектора. До STL-ного далеко

    JC_NVKZ, 20 Июля 2010

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

    +172

    1. 1
    map<pair<pair<int,int>, int>, vector<pair<pair<int,int>, pair<int,int> > > > m;

    великолепно потом пробегать по коллекции

    MAK, 19 Июля 2010

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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    #define DOISA(x,p,y)              \
    ClassID x::isA() const{return y;} \
    MYBoolean x::isA(ClassID i) const \
    {                                 \
    	return (i == x::isA() ? TRUE : p::isA(i)); \
    }

    Ядро большого проекта. Имеется довольно большая иерархия наследуемых классов с виртуальными методами isA(). Все эти методы зачем-то сворачиваются в этот макрос.

    DarthBobr, 16 Июля 2010

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

    +158

    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
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    switch(filter)
       {
          case FILTER_SPECIAL:
          {
    
             if ( ( u8Direction >= 0xF0 ) || ( u8Direction <= 0x0F ) )
             {
                return 0x0;
             }
             else if ( ( u8Direction >= 0x10 ) && ( u8Direction <= 0x2F ) )
             {
                return 0x2;
             }
             else if ( ( u8Direction >= 0x30 ) && ( u8Direction <= 0x4F ) )
             {
                return 0x4;
             }
             else if ( ( u8Direction >= 0x50 ) && ( u8Direction <= 0x7F ) )
             {
                return 0x6;
             }
             else if ( u8Direction == 0x80 )
             {
                return 0x8;
             }
             else if ( ( u8Direction >= 0x81 ) && ( u8Direction <= 0xAF ) )
             {
                return 0xA;
             }
             else if ( ( u8Direction >= 0xB0 ) && ( u8Direction <= 0xCF ) )
             {
                return 0xC;
             }
             else if ( ( u8Direction >= 0xD0 ) && ( u8Direction <= 0xEF ) )
             {
                return 0xE;
             }
             break;
          }
    
          case FILTER_NORMAL:
          --//--
          break;
          case FILTER_BACKWARD_DIRECTION:
          --//--
         break;
      }

    Сферический индокод в вакууме

    Zielscheibe, 16 Июля 2010

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

    +164

    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
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    std::string str(bool val) {
      std::stringstream ss;
      ss << val;
      return ss.str();
    }
    
    std::string str(short val) {
      std::stringstream ss;
      ss << val;
      return ss.str();
    }
    
    std::string str(unsigned short val) {
      std::stringstream ss;
      ss << val;
      return ss.str();
    }
    
    std::string str(int val) {
      std::stringstream ss;
      ss << val;
      return ss.str();
    }
    
    std::string str(unsigned int val) {
      std::stringstream ss;
      ss << val;
      return ss.str();
    }
    
    std::string str(long val) {
      std::stringstream ss;
      ss << val;
      return ss.str();
    }
    
    std::string str(unsigned long val) {
      std::stringstream ss;
      ss << val;
      return ss.str();
    }
    
    std::string str(float val) {
      std::stringstream ss;
      ss << val;
      return ss.str();
    }
    
    std::string str(double val) {
      std::stringstream ss;
      ss << val;
      return ss.str();
    }
    
    std::string str(long double val) {
      std::stringstream ss;
      ss << val;
      return ss.str();
    }

    Вот что значит невыспанная голова!
    Чуть позже переделал в это

    template<class T>
    std::string str(T val) {
    std::stringstream ss;
    ss << val;
    return ss.str();
    }

    rudvil, 14 Июля 2010

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

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    m_lActiveTab = GetCurSel();
    for (int i = 0; i < GetItemCount(); i++)
    	m_cItemSelected[m_lActiveTab] = false;
    m_cItemSelected[m_lActiveTab] = true;

    Вот так говнокодят в крупных проектах

    Snake2101, 14 Июля 2010

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

    +160

    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
    int S; 
    int A; 
    int random_integer = (rand()%3); 
    cout<<"Skolko vsego palochek\n"; 
    cin>>S; 
    cout<<"Komp zaberaet\n"; 
    S-=random_integer; 
    cout<<s<<"\n";>>A; 
    S-=A; 
    if (S==8) S-=3; cout<<"Komp Zaberaet\n"; 
    if (S==7) S-=2; cout<<"Komp Zaberaet\n"; 
    if (S==6) S-=1; cout<<"Komp Zaberaet\n"; 
    if (S==4) S-=3; cout<<"Komp Zaberaet\n"; 
    if (S==3) S-=2; cout<<"Komp Zaberaet\n"; 
    if (S==2) S-=1; cout<<"Komp Zaberaet\n"; 
    else 
    if (A==1) S-=3; cout<<"Komp Zaberaet\n"; 
    if (A==2) S-=2; cout<<"Komp Zaberaet\n"; 
    if (A==3) S-=1; cout<<"Komp Zaberaet\n"; 
    cout<<s<<"\n";>>A; 
    if (S<=0) cout<<"Vu proigrali\n"; 
    if (A!=3 && A!=2 && A!=1) cout<<"Mogno tolko ot 1-3 palochek\n";

    Вот такой суровый говнокод я встретил в одном из вопросов ВиО. То что код не рабочий и так понятно.

    Ivan0x32, 04 Июля 2010

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

    +157

    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
    MYCString  myexport
    operator+(const MYCString& s, const char* pstr)
    {
      return MYCString(s, pstr);	// Use the special concatenation constructor
    }            
    
    MYCString myexport
    operator+(const char* c, const MYCString& s)
    {
      return MYCString(c) + s.data();
    }
    
    MYCString  myexport
    operator+(const MYCString& a, const MYCString& s)
    {
      return a + s.data();
    }

    Название класса изменено. Он встречается в одном большом проекте в библиотеке-заменителе STL )

    DarthBobr, 02 Июля 2010

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