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

    +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
    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
    do
        {
    		count++;
    		Xt=X;
    		if (ii==1)
    		{
    			X= dichotomia(a,b, E);
    			fprintf(bnf, "%lf;\n", Xt);
    		}
    		else
    		{
    			if (ii==2)
    			{
    				X=newton(X, E);
    				fprintf(bnf, "%lf;\n", Xt);
    			} 
    			else
    			{
    				if (ii==3)
    				{
    					X=sekuschich(X, b);
    					fprintf(bnf, "%lf;\n", Xt);
    				}
    				else
    				{
    					if (ii==4)
    					{
    						ii==1;
    						ii==2;
    						ii==3;
    					}
    				}
    			}
    		}
    		printf("X=%lf\n", X);
    		if(Func(X)*Func(a)>0)a=X;
    		else b=X;
    	}
    	while(fabs(X-Xt)>=E);

    В общем лаба на численые методы поиска корней.
    После того как я предоставил няшный, полностью удовлетворяющий условиям, после проверки меня попросили "сделать как у парней", и вот участок их высера

    p.s. форматирование сохранить не удалось, да и там совсем бы ничего понятно бы не было

    maksim_ovcharik, 09 Июля 2012

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

    +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
    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
    template<typename T1, typename T2, size_t OFFSET = 8>
    struct EnumMult
    {
        template<T1 t1, T2 t2>
        struct Static
        {
            static const size_t V = (t1 << OFFSET) | t2;
        };
    
        static size_t Dynamic(T1 t1, T2 t2)
        {
            return (t1 << OFFSET) | t2;
        }
    };
    
    // example
    #include <iostream>
    
    enum Suit
    {
        SPADES,
        CLUBS,
        DIAMONDS,
        HEARTS
    };
    
    enum Value
    {
        SEVEN,
        EIGHT,
        NINE,
        TEN,
        JACK,
        QUEEN,
        KING,
        ACE
    };
    
    int main()
    {
        typedef EnumMult<Suit, Value> CardMult;
        switch (CardMult::Dynamic(CLUBS, SEVEN))
        {
        case CardMult::Static<SPADES, ACE>::V:
            std::cout << "ACE OF SPADES";
            break;
        case CardMult::Static<CLUBS, SEVEN>::V:
            std::cout << "HOOK";
            break;
        default:
            std::cout << "NOTHING SPECIAL";
        }
        std::cout << std::endl;
        return 0;
    }

    Понадобилось обработать два enum'а конструкцией switch-case, подумал, что было бы круто сделать квадратный свитч-кейс, но пришла и другая идиотская идея: шаблон для декартова умножения двух енумов. Заранее извините, если паттерн известный.

    vercetti, 07 Июля 2012

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

    +26

    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
    input >> heap;
    	while( heap[0] == '0' ) heap.erase( 0, 1 );
    
    	heaps.push_back( heap );
    
    	input >> heap;
    	while( heap[0] == '0' ) heap.erase( 0, 1 );
    
    	heaps.push_back( heap );
    
    	input >> heap;
    	while( heap[0] == '0' ) heap.erase( 0, 1 );
    
    	heaps.push_back( heap );

    Fai, 05 Июля 2012

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

    +21

    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
    template <typename T> 
    void sort( T array[], size_t length ) {
    	size_t left_index = 0;
    	size_t right_index = length - 1;
    
    	while ( left_index < right_index ) {
    		size_t min_index = min( array, left_index, right_index );
    		swap( array, min_index, left_index );
    
    		size_t max_index = max( array, left_index, right_index );
    		swap( array, max_index, right_index );
    
    		left_index++;
    		right_index--;
    	}
    }

    Fai, 05 Июля 2012

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

    +15

    1. 1
    system("PAUSE")

    Красивое, оптимальное, и самое главное, кроссплатформенное решение для ожидания нажатия клавиши.
    http://habrahabr.ru/post/147104/

    Предупреждая вопрос "где здесь с++", отвечу - автор считал, что он пишет на с++, и даже использовал пару конструкций оттуда - перегрузку функций и new/delete.

    bormand, 05 Июля 2012

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

    +15

    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
    #pragma once
    #include <assert.h>
     
    template<typename T>
    inline T notNull(T arg)
    {
            assert(arg!=NULL);
            return arg;
    }
     
    /*
    //example:
    class AnotherClass;
    
    class SomeClass
    {
    AnotherClass * m_another;
    //...
            SomeClass(AnotherClass * another, /*skipped*/) : m_another(notNull(another)), /*skipped*/;
    }
    */

    Мелочь, конечно же, но всё-таки чушь, несмотря на пользу.

    Xom94ok, 04 Июля 2012

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

    +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
    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
    // хелпер чтобы конвертить типы строк
    template <class S1, class S2>
    struct str_convert {
    	static S1 conv(S2 const & s2) { return str_convert<S2, S1>::conv(s2); }		// по умолчанию ищет специализацию для пары S2, S1
    	static S2 conv(S1 const & s1) { return str_convert<S2, S1>::conv(s1); }
    };
    
    // специализация, чтобы не конвертить одно в одно
    template <class S>
    struct str_convert<S, S> {
    	static S const & conv(S const & s) { return s; };
    };
    
    // специализация, чтобы конвертить std::string <-> std::wstring
    template <>
    struct str_convert<std::string, std::wstring> {
    	static std::string conv(std::wstring const & ws) { return boost::locale::conv::utf_to_utf<char>(ws); }
    	static std::wstring conv(std::string const & s)  { return boost::locale::conv::utf_to_utf<wchar_t>(s); }
    };
    
    // специализация QString <-> std::string
    // skipped
    
    template <class StringType = std::string>
    struct some 
    {
    	typedef StringType		string_type;
    	typedef std::string		utf8_string_type;
    
    	some(string_type const & s = string_type())
    		: inner_string_(s)
    	{}
    
    	template <class S>
    	some(S const & s)
    		: inner_string_(str_convert<S, string_type>::conv(s))
    	{}
    
    	string_type inner_string_;
    };
    
    int main()
    {
    	std::string s = "hello!";
    	some<> test0(s);		  // ok
    	some<> test2("hello!"); // ха-ха, вот еще, пытаться самостоятельно привести к std::string, пиши специализацию для массивов, сука!
    	return 0;
    }

    сегодня ради красоты передачи "literal" в конструктор писал говноспециализации для PodType[N]

    defecate-plusplus, 04 Июля 2012

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

    +23

    1. 1
    2. 2
    if(this==NULL)
      return;

    HaskellGovno, 04 Июля 2012

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

    +5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    template<class T>
    bool IsAligned(T SizeOrAddress, const size_t AlignStep)
    {
    	return SizeOrAddress==Align(SizeOrAddress, AlignStep);
    }

    HaskellGovno, 03 Июля 2012

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

    +15

    1. 1
    void* const allocateOrDie(const size_t Size) throw();

    Ультиматум. :)

    HaskellGovno, 03 Июля 2012

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