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

    +8

    1. 1
    if(copytype==WHOLE_FILE) //whole file

    О пользе комментариев

    absolut, 12 Ноября 2015

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

    −2

    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
    unsigned strlen(const char *str)
    {
    	const char *ptr;
    	for (ptr = str; *ptr; ++ptr);
    	return ptr - str;
    }
    
    char *strcpy(char *dst, const char *src)
    {
    	while((*dst++ = *src++) != 0);
    	return dst;
    }
    namespace std
    {
    	class string
    	{
    	public:
    		string(const char *str = 0) : size(str ? strlen(str) : 0)
    		{
    			this->str = new char[size + 1];
    			if(str) strcpy(this->str, str);
    			else this->str[0]=0;
    		}
    		string(const string &str) : size(str.size)
    		{
    			this->str = new char[size +1];
    			strcpy(this->str, str.str);
    		}
    		~string()
    		{
    			delete[] str;
    		}
    		const char* c_str() const
    		{
    			return str;
    		}
    	private:
    		char *str;
    		unsigned size;
    	};
    
    	class Cout
    	{
    	public:
    		Cout &operator<< (const char *str)
    		{
    			unsigned len = strlen(str);
    			asm volatile (
    			"movl $0x04, %%eax\n" 
    			"movl $0x01, %%ebx\n"
    			"int $0x80\n"
    			:
    			: "c"(str), "d"(len));
    			return *this;
    		}
    		Cout &operator<< (const string &str)
    		{
    			operator<< (str.c_str());
    			return *this;
    		}
    	} cout;
    }
    
    int main()
    {
    	std::string str = "Hello World!";
    	std::cout << str << "\n";
    	return 0;
    }

    Ещё 1 хелловорлд для линуха x86 на С++

    Koncord, 07 Ноября 2015

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

    +1

    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
    class CBaseEntity {
    
            // ...
    
    	void (CBaseEntity ::*m_pfnThink)(void);
    
    	virtual void Think( void ) { if (m_pfnThink) (this->*m_pfnThink)(); };
    
            // ...
    
    	// Ugly code to lookup all functions to make sure they are exported when set.
    
    #ifdef _DEBUG
    	void FunctionCheck( void *pFunction, char *name ) 
    	{ 
    		if (pFunction && !NAME_FOR_FUNCTION((uint32)pFunction) )
    			ALERT( at_error, "No EXPORT: %s:%s (%08lx)\n", STRING(pev->classname), name, (uint32)pFunction );
    	}
    
    	BASEPTR ThinkSet( BASEPTR func, char *name ) 
    	{ 
    		m_pfnThink = func; 
    		FunctionCheck( (void *)*((int *)((char *)this + ( offsetof(CBaseEntity,m_pfnThink)))), name ); 
    		return func;
    	}
    
            // ...
    
    };
    
    // Ugly technique to override base member functions
    // Normally it's illegal to cast a pointer to a member function of a derived class to a pointer to a 
    // member function of a base class.  static_cast is a sleezy way around that problem.
    
    #ifdef _DEBUG
    
    #define SetThink( a ) ThinkSet( static_cast <void (CBaseEntity::*)(void)> (a), #a )
    
    // ...
    
    #else
    
    #define SetThink( a ) m_pfnThink = static_cast <void (CBaseEntity::*)(void)> (a)
    
    // ...
    
    #endif

    https://github.com/ValveSoftware/halflife/blob/5d761709a31ce1e71488f2668321de05f791b405/dlls/cbase.h

    > it's illegal
    В крестах всё легально, главное - попросить прощения в комментах...

    bormand, 05 Ноября 2015

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

    +5

    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
    struct DateTime {
        string x;
        DateTime() { x = Now(); } 
        DateTime(const string& _x): x(_x) { if (BadDateTime) throw Exception(); }
        operator string() { return x; }
    };
    
    string correctDateTime(const string& value)
    {
        try
        {
            DateTime(value); // if the value is bad, ctor will throw
            return value;
        }
        catch (…) {}
        return DateTime(); // and we replace bad DateTime with currentDateTime
    }

    Где ошибка?

    Bobik, 04 Ноября 2015

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

    +1

    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
    #include <iostream>
    #include <conio.h>
    #include <windows.h>
    #include <vector>
    using namespace std;
    class Grey
    {
    	private:
    		int n, Search;
    		vector<int> list;
    		void getData()
    		{
    			printf("Задайте колличество числел Фибоначчи -> ");
    			scanf("%d", &n);
    		}
    		void builderTable()
    		{
    			list.resize(n);
    			list[0]=1; list[1]=1;
    			printf("1 1 ");
    			for(int i=2; i<n; i++)
    			{	
    				list[i]=list[i-1]+list[i-2];
    				printf("%d ", list[i]);
    			}
    		}
    		void search()
    		{
    			printf("\nПоказать елемент -> ");
    			scanf("%d", &Search);
    			while(Search<1 || Search>n)
    			{
    				printf("  Ошибка! Попробуйте еще раз -> ");
    				scanf("%d", &Search);
    			}
    			printf("Результат: %d", list[--Search]);
    		}
    		public:
    			void Fibonachi()
    			{
    				getData();
    				builderTable();
    				search();
    			}
    };
    main()
    {
    	SetConsoleCP(1251);
    	SetConsoleOutputCP(1251);
    	Grey obj1;
    	obj1.Fibonachi();
    }

    Выводим числа Фибоначчи, после чего предоставляем значение нужного элемента)

    NeeON, 31 Октября 2015

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

    −1

    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
    int expr_type=Expression();
    
    				if (param->Left != NULL)
    				{
    					param = param->Left;
    					if (param->node.NodeType == DATA_VAR)
    					{
    						SemantTree *type = (SemantTree *)param->node.Val.varible.VarType;
    						if (type->node.type != expr_type)
    						{
    							sc->PrintError("тип фактического параметра не приводится к типу соответствующего ему формального параметра", l);
    							return;
    						}
    					}
    					else//если не переменная
    					{
    						sc->PrintError("количество формальных и фактических параметров не совпадает", l);
    						return;
    					}
    				}
    				else//если вдруг левое поддерево==NULL
    				{
    					sc->PrintError("количество формальных и фактических параметров не совпадает", l);
    					return;
    				}
    				param_counter++;
    				if (param_counter>idr->node.Val.func.paramCount)//если счетчик фактических превысил кол-во формальных
    				{
    					sc->PrintError("количество формальных и фактических параметров не совпадает", l);
    					return;
    				}

    теория формальных языков. моя лаба по семантическому анализу))

    vladimir94, 25 Октября 2015

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

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    const int size = 100000;
    const int maxVal = 1e9;
    for(int i = 0; i < n; i++)
        values[i] = rand() % (maxVal + 1);

    Код работает на вин32

    3_dar, 25 Октября 2015

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

    +4

    1. 1
    2. 2
    3. 3
    bool isPalindrom(int n, int add = 0, int addLen = 0) {
    	return n == 0 && addLen != 0 ? false : n == add || isPalindrom(n / 10, pow(10, addLen) * n % 10 + add, addLen + 1);
    }

    Является ли число палиндромом?

    Al_Kozincev, 24 Октября 2015

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

    +4

    1. 1
    static bool Equal(const MyClass &rhs, const MyClass &lhs);

    Тщатетельно замаскированные грабли

    skyhawk, 22 Октября 2015

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

    +9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    if (Label125->Color == clGreen)
    {
      CreateOrderApi();// создаем накладную
    }
    else 
    {
      MessageBox("Не удалось создать накладную", "Ошибка", MB_OK | MB_ICONERROR);
    }

    expresscourier, 15 Октября 2015

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