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

    +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
    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
    /*
        Макрос генерирует внутренности функции-заглушки OpenGL.
    */
    #define BWT_DECLARE_OPENGL_PROC_IMPL(PROC, PROC_TYPE, ...)                                  \
        static PROC_TYPE _##PROC = 0;                                                           \
                                                                                                \
        if (_##PROC)                                                                            \
            return _##PROC(__VA_ARGS__);                                                        \
        else                                                                                    \
        {                                                                                       \
            _##PROC = TryToGetProcAddress<PROC_TYPE>(#PROC);    return _##PROC(__VA_ARGS__);    \
        }
    
    /*
        Функция получает адрес функции, или возбуждает исключение, если адрес получить не удалось.
    */
    template<typename proc_type>
    proc_type TryToGetProcAddress(const char *proc_name) throw(error_type<VIDEO>)
    {
        proc_type address = reinterpret_cast<proc_type>(::SDL_GL_GetProcAddress(proc_name));
    
        if (!address)
            BWT_THROW_VIDEO_ERROR(UNDEFINED_ERROR, "OpenGL version does not supported");
    
        return address;
    }
    
    GLAPI void APIENTRY glCullFace (GLenum mode)
    {
        BWT_DECLARE_OPENGL_PROC_IMPL(glCullFace, PFNGLCULLFACEPROC, mode);
    }
    
    ...

    ZltCity, 15 Октября 2010

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

    +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
    #include <iostream>
    using namespace std;
    int main(){
    char b,a[1001];
    int i, c=0;
    cin >> b;
    for(i=1; i<=1000; i++)
      cin >> a[i];
    for( i=1; i<=1000; i++)
      if(a[i]=='b') c++;
    
    cout <<c<<" "<<b<<" characters in ";
    for(i=1; i<=1000; i++)
      cout << a[i];
    return 0;
    }  //помогите найти ошибку

    Источник - http://tinyurl.com/26n9df5

    Skiv, 12 Октября 2010

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

    +154

    1. 1
    2. 2
    3. 3
    String boo =  value[i]/*.ConvertTo<String>()*/;
    std::string boovalue(boo.Value());
    st.bind(1+i, boovalue.c_str());

    hamsta, 11 Октября 2010

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

    +164

    1. 1
    2. 2
    #define MERGE(X,Y) X##Y
    typedef unsigned MERGE(ch,ar)	byte;

    sermp, 11 Октября 2010

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

    +157

    1. 1
    2. 2
    3. 3
    4. 4
    if ( условие )                                                                                                                                                                                                                                                                                                                                             ;                 
    {
     //что-либо сделать
    };

    //"счастливой отладки" v.2.0
    отгреб в собственном-же коде)))))

    Denjs, 08 Октября 2010

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

    +191

    1. 1
    2. 2
    3. 3
    4. 4
    // I am not responsible of this code.
    // They made me write it, against my will.
    
    double penetration;

    http://community.livejournal.com/programmers_fun/65300.html

    wecanstoptrain, 20 Сентября 2010

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

    +161

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    void __fastcall ReverseStream(TMemoryStream* Stream)
    {
        TMemoryStream* buf = new TMemoryStream;
        buf->LoadFromStream(Stream);
        __int64 size = Stream->Size;
        Stream->Clear();
        for (__int64 i=size-1; i >= 0; i--) {
            buf->Position = i;
            Stream->CopyFrom(buf, 1);
        }
    }

    Мне cpu+mem жалко, когда такие простые задачи творят через такие навороты...

    fddpro, 20 Сентября 2010

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

    +143

    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
    #include "StdAfx.h"
    #include <stdio.h>
    #include <conio.h>
    #include <Windows.h>
    
    int main()
    {
    	int hs, hr, ms, mr, resulth, resultm;
    
    	printf("-----------------------------------\n------ Counting machine 3000 ------ \n \n");
    
    	printf("Write start time: ");
    	scanf("%d %d", &hs, &ms);
    
    	printf("Write time on the road: ");
    	scanf("%d %d", &hr, &mr);
    	
    	printf("Expect to perform a calculation...\n");
    	Sleep(4000);
    
    	resulth=hs+hr;
    	resultm=ms+mr;
    	
    	while (resulth>=24)
    	{
    		resulth=resulth-24;
    	}
    	
    	if (resultm>=60)
    	{
    		resultm=resultm-60;
    		resulth++;
    	}
    
    	printf("Done! You'll reach your destination at ", "%d", resulth, ":", "%d", resultm, ".");
    	printf("%d", resulth);
    	printf(":");
    	printf("%d", resultm, ".");
    	printf(".");
    
    	printf("\n\n-----------------------------------");
    	
    	int i;
    	scanf("%d", &i);
    
    	return 0;
    }

    «Время отправления и время прибытия поезда задаются в виде Ч М, где Ч - час от 0 до 23, М - минута от 0 до 59. Время в пути задаётся аналогично в формате Ч М, где Ч - количество часов от 0 до 999, а М - количество минут от 0 до 59.
    Требуется по данному времени отправления и времени в пути вычислить время прибытия поезда (возможно, в другие сутки).»

    Romanoff, 18 Сентября 2010

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

    +169

    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
    if(typeid(*Line1)==typeid(TLine)) ; else
    if(typeid(*Line2)==typeid(TLine)) {cLine=Line1; Line1=Line2; Line2=cLine;} else
    if(typeid(*Line1)==typeid(TRay)) ; else
    if(typeid(*Line2)==typeid(TRay)) {cLine=Line1; Line1=Line2; Line2=cLine;} else
    if(typeid(*Line1)==typeid(TLineSegment)) ; else
    if(typeid(*Line2)==typeid(TLineSegment)) {cLine=Line1; Line1=Line2; Line2=cLine;}
    
    if(typeid(*Line1)==typeid(TLine)) {
    	if(typeid(*Line2)==typeid(TLine))  return 1; else
    	if(typeid(*Line2)==typeid(TRay)) {
    		if(
    			(( ((TRay*)Line2)->X1<=((TRay*)Line2)->X2 && ((TRay*)Line2)->X1<=Point.x )  ||
    			 ( ((TRay*)Line2)->X1>=((TRay*)Line2)->X2 && ((TRay*)Line2)->X1>=Point.x )) &&
    			(( ((TRay*)Line2)->Y1<=((TRay*)Line2)->Y2 && ((TRay*)Line2)->Y1<=Point.y )  ||
    			 ( ((TRay*)Line2)->Y1>=((TRay*)Line2)->Y2 && ((TRay*)Line2)->Y1>=Point.y ))
    		  )
    			return 1;
    		else
    			return -1;
    	} else
    	if(typeid(*Line2)==typeid(TLineSegment)) {
    		if(
    			(( ((TLineSegment*)Line2)->X1<=Point.x && Point.x<=((TLineSegment*)Line2)->X2 )||( ((TLineSegment*)Line2)->X2<=Point.x && Point.x<=((TLineSegment*)Line2)->X1 )) &&
    			(( ((TLineSegment*)Line2)->Y1<=Point.y && Point.y<=((TLineSegment*)Line2)->Y2 )||( ((TLineSegment*)Line2)->Y2<=Point.y && Point.y<=((TLineSegment*)Line2)->Y1 ))
    		  )
    			return 1;
    		  else
    			return -1;
    	}
    } else
    if(typeid(*Line1)==typeid(TRay)) {
    	if(typeid(*Line2)==typeid(TRay)) {
    		if(
    			((( ((TRay*)Line1)->X1<=((TRay*)Line1)->X2 && ((TRay*)Line1)->X1<=Point.x )  ||
    			  ( ((TRay*)Line1)->X1>=((TRay*)Line1)->X2 && ((TRay*)Line1)->X1>=Point.x )) &&
    			 (( ((TRay*)Line1)->Y1<=((TRay*)Line1)->Y2 && ((TRay*)Line1)->Y1<=Point.y )  ||
    			  ( ((TRay*)Line1)->Y1>=((TRay*)Line1)->Y2 && ((TRay*)Line1)->Y1>=Point.y )))
    			&&
    			((( ((TRay*)Line2)->X1<=((TRay*)Line2)->X2 && ((TRay*)Line2)->X1<=Point.x )  ||
    			  ( ((TRay*)Line2)->X1>=((TRay*)Line2)->X2 && ((TRay*)Line2)->X1>=Point.x )) &&
    			 (( ((TRay*)Line2)->Y1<=((TRay*)Line2)->Y2 && ((TRay*)Line2)->Y1<=Point.y )  ||
    			  ( ((TRay*)Line2)->Y1>=((TRay*)Line2)->Y2 && ((TRay*)Line2)->Y1>=Point.y )))
    		  )
    			return 1;
    		else
    			return -1;
    	} else
    	if(typeid(*Line2)==typeid(TLineSegment)) {
    		if(
    			((( ((TRay*)Line1)->X1<=((TRay*)Line1)->X2 && ((TRay*)Line1)->X1<=Point.x )  ||
    			  ( ((TRay*)Line1)->X1>=((TRay*)Line1)->X2 && ((TRay*)Line1)->X1>=Point.x )) &&
    			 (( ((TRay*)Line1)->Y1<=((TRay*)Line1)->Y2 && ((TRay*)Line1)->Y1<=Point.y )  ||
    			  ( ((TRay*)Line1)->Y1>=((TRay*)Line1)->Y2 && ((TRay*)Line1)->Y1>=Point.y )))
    			&&
    			((( ((TLineSegment*)Line2)->X1<=Point.x && Point.x<=((TLineSegment*)Line2)->X2 )||( ((TLineSegment*)Line2)->X2<=Point.x && Point.x<=((TLineSegment*)Line2)->X1 )) &&
    			((  ((TLineSegment*)Line2)->Y1<=Point.y && Point.y<=((TLineSegment*)Line2)->Y2 )||( ((TLineSegment*)Line2)->Y2<=Point.y && Point.y<=((TLineSegment*)Line2)->Y1 )))
    		  )
    			return 1;
    		else
    			return -1;
    	}
    	return 1;
    } else
    if(typeid(*Line1)==typeid(TLineSegment)) {
    	if(
    		((( ((TLineSegment*)Line1)->X1<=Point.x && Point.x<=((TLineSegment*)Line1)->X2 )||( ((TLineSegment*)Line1)->X2<=Point.x && Point.x<=((TLineSegment*)Line1)->X1 )) &&
    		((  ((TLineSegment*)Line1)->Y1<=Point.y && Point.y<=((TLineSegment*)Line1)->Y2 )||( ((TLineSegment*)Line1)->Y2<=Point.y && Point.y<=((TLineSegment*)Line1)->Y1 )))
    		&&
    		((( ((TLineSegment*)Line2)->X1<=Point.x && Point.x<=((TLineSegment*)Line2)->X2 )||( ((TLineSegment*)Line2)->X2<=Point.x && Point.x<=((TLineSegment*)Line2)->X1 )) &&
    		((  ((TLineSegment*)Line2)->Y1<=Point.y && Point.y<=((TLineSegment*)Line2)->Y2 )||( ((TLineSegment*)Line2)->Y2<=Point.y && Point.y<=((TLineSegment*)Line2)->Y1 )))
    	  )
    		return 1;
    	else
    		return -1;
    }

    Имеются классы:
    class TLine; // Линия
    class TRay: public TLine; // Луч
    class TLineSegment: public TRay; // Отрезок
    Функция записывает в Point точку пересечения прямых и возвращает 0 если прямые параллельны, -1 если пересекаются продолжения отрезков и 1 если пересекаются отрезки.
    Выше представлен кусок кода где проводится проверка, принадлежит точка пересечения отрезкам или их продолжениям.

    sanchousf, 17 Сентября 2010

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

    +178

    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
    прислали реальный код:
    while(i --> 10) { }
    
    придумано, но выглядят эффектно:
    while (i <- 10) {}
    
    while( *i* *i* *i* *i* (4 /* раза повторить *i* */) > 0) {}
    
    int n = i ** i;
    
    int n = i ********* i;
    
    int n = a / * b; // это не открытие комментария - там пробел есть
    
    int n = a? 0:-E; /* типа смайлик 0 : - E в коде */
    
    или даже
    
    while(myclass<i> *a2) {}
    что на самом деле является вот этим:
    
    int myclass = 0;
    int *a2 = &myclass;
    while( (myclass < i) > *a2) {}

    о неправильной расстановке пробелов...
    или за что нужно убивать.

    ctm, 17 Сентября 2010

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