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

    +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
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       bool Valid = true;
       bool f1;
       bool f2;
       unsigned step = 0;
       for( bool x1=false; x1<2; x1++ )
          for( bool x2=false; x2<2; x2++ )
             for( bool x3=false; x3<2; x3++ )
                for( bool x4=false; x4<2; x4++ )
                   for( bool x5=false; x5<2; x5++ )
                      for( bool x6=false; x6<2; x6++ )
                         for( bool x7=false; x7<2; x7++ )
                            for( bool x8=false; x8<2; x8++ )
                               for( bool x9=false; x9<2; x9++ )
                                  for( bool x10=false; x10<2; x10++ )
                                     for( bool x11=false; x11<2; x11++ )
                                        for( bool x12=false; x12<2; x12++ )
                                           for( bool x13=false; x13<2; x13++ )
                                              for( bool x14=false; x14<2; x14++ )
                                                 for( bool x15=false; x15<2; x15++ )
                                                 {
       step++;                                             
       f1 = ( x1 && x2 || x3 && x4 || x5 && x6 && x7 || x8 && x9 && x10 ) && ( !x11 || x12 && x13 || x14 && x15 );
       f2 = (!(!x1 || !x2) || !(!x3 || !x4) || !(!x5 || !x6 || !x7) || !(!x8 || !x9 || !x10)) && ( !(!x14 || !x15) || !x11 || !(!x12 || !x13) );
       if ( f1 != f2 ) Valid = false; break;
                                                 }
       if( Valid ) Application->MessageBox( "Функции идентичны", "Функции идентичны", MB_OK );
       else Application->MessageBox( "NOT Valid", IntToStr(step).c_str(), MB_OK );
    
    }

    Проверка идентичности логических функций путем перебора аргументов.

    absolut, 19 Мая 2010

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

    +159

    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
    void __fastcall TMainForm::TimerCheckForPowerOffTimeTimer(TObject *Sender)
    {
       // Обновление текущего времени/дня недели
       eDayOfToday->Text = FormatDateTime("dddd", Now() );
       DateTimePickerCurrentTime->DateTime = Now();
    
       static already = false; // процесс выключения начался
       if( !CheckBox1->Checked ) already = false;
       if( CheckBox1->Checked && !already ) // первое срабатываение таймера по времени
       {
          AnsiString TimeString = TimeToStr(TTime::CurrentTime());
          bool  TimeToPowerOff = false;
    
          if( cbAllDay->Checked )
          {
             TimeToPowerOff = ( TimeToStr(DateTimePickerAllday->Time) == TimeString );
          }
          else
          {
             switch( DayOfWeek( Now() ) )
             {
                case SUNDAY:
                {
                   if( cbSunday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerSunday->Time) == TimeString );
                   }
                   break;
                }
                case MONDAY:
                {
                   if( cbMonday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerMonday->Time) == TimeString );
                   }
                   break;
                }
                case TUESDAY:
                {
                   if( cbTuesday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerTuesday->Time) == TimeString );
                   }
                   break;
                }
                case WEDNESDAY:
                {
                   if( cbWednesday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerWednesday->Time) == TimeString );
                   }
                   break;
                }
                case THURSDAY:
                {
                   if( cbThursday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerThursday->Time) == TimeString );
                   }
                   break;
                }
                case FRIDAY:
                {
                   if( cbFriday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerFriday->Time) == TimeString );
                   }
                   break;
                }
                case SATURDAY:
                {
                   if( cbSaturday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerSaturday->Time) == TimeString );
                   }
                   break;
                }
             } // switch
          } // else cbAllDay->Checked
    
          if( TimeToPowerOff )
          {
             already=true;
             SetPermission();
             ShutDownPC();
          }
       } // первое срабатывание
    }

    Вырезка из программы для выключения питания компа. Данная функция вызывается по таймеру, раз в 900 мс :)
    Совпадение времен проверяется сравнением их строкового представления. Ну и в довесок, однообразный код в switch().

    absolut, 19 Мая 2010

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

    +166

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    MyClass * obj = (MyClass*)true;
    while (obj)
    {
        obj = GetObj();
        // ...
    }

    glook, 18 Мая 2010

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

    +149

    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
    template<typename T>void mescolare(T array1[], T array2[])
    {
    int size_array = sizeof(array1)/sizeof(array1[0])-1;
    srand(time(0));
    int fg;
    int *zer=new int[size_array];	
    for(int d=0;d<=size_array;d++)
    	{
    		fg = rand()%size_array;
    		for(int v=0;v<=size_array;v++)
    		{
    			if(zer[v]==fg){
    				zer[v]=fg;
    				fg = rand()%size_array;
    			}else{
    				zer[v]=fg;
    				break;
    			}
    		}
    		array2[d]=array1[fg];
    	}
    }

    А это мы перемешивам элементы массива!

    hromjo, 17 Мая 2010

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

    +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
    #define NAT unsigned int
    class Matrix {...};
    
    bool ortholin ( Matrix & a, const double * b, double * x )
    {
        const nat n = a.nRow;
        const nat m = a.nCol;
        // далее нигде не используется класс матрицы и идет Сишный код
    }
    
    bool ortholin ( nat n, nat m, const double * const * a, const double * b, double * x )
    {
        return ortholin ( Matrix ( n, m, a ), b, x );
    }

    Kornew, 16 Мая 2010

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

    +144

    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
    #include <string>
    #include <iostream>
    #include <cstddef>
    int main() {
    size_t ia;
    ia = sizeof( ia ); // правильно
    ia = sizeof ia; // правильно
    // ia = sizeof int; // ошибка
    ia = sizeof( int ); // правильно
    int *pi = new int[ 12 ];
    cout << "pi: " << sizeof( pi )
    << " *pi: " << sizeof( pi )
    << endl;
    // sizeof строки не зависит от
    // ее реальной длины
    string stl( "foobar" );
    string st2( "a mighty oak" );
    string *ps = &stl;
    cout << " st1: " << sizeof( st1 )
    << " st2: " << sizeof( st2 )
    << " ps: sizeof( ps )
    << " *ps: " << sizeof( *ps )
    << endl;
    cout << "short :\t" << sizeof(short) << endl;
    cout << "shorf" :\t" << sizeof(short*) << endl;
    cout << "short& :\t" << sizeof(short&) << endl;
    cout << "short[3] :\t" << sizeof(short[3]) << endl;
    }

    hromjo, 16 Мая 2010

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

    +984

    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
    string s;
    
    cout << "input words order:" << endl;
    getline(cin, s);
    
    int pos=0;
    while (true)
    {
    	pos=s.find(" ", pos+1);
    	if (pos==string::npos)
    		break;
    	num++;
    }
    num++;
    
    string words[num];
    pos=0;
    for (int i=0; i<num; i++)
    {
    	pos=s.find(" ");
    	if (pos==string::npos)
    	{
    		words[i]=s;
    		break;
    	}
    	words[i]=s.substr(0, pos);
    	pos++;
    	s=s.erase(0, pos);
    }

    очередной ночной опус. что? токенайзеры и вектора? ночь же..

    ilardm, 16 Мая 2010

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

    +993

    1. 1
    2. 2
    // Randomize
    #define srand(x) srand(x + GetCurrentThreadId())

    Чтобы в разных тредах не выдавало одинаковые последовательности

    k06a, 14 Мая 2010

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

    +142

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    class cout_mt : public std::ostringstream
    {
    public:
       ~mt_ostream()
       {
          std::cout << str();
       }
    };
    
    #define cout static_cast<cout_mt&>(cout_mt())

    Для того чтобы не разрывались строки вида: cout << "Value = " << value << ";" << endl; при использовании таких вызовов из нескольких тредов, а то ведь каждый оператор << является вызовом функции и частенько треды мешаю друг другу выводить . . .

    k06a, 14 Мая 2010

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

    +987

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    enum State
    {
       NotOpened  = __LINE__;
       Waiting    = __LINE__;
       Opened     = __LINE__;
       Finished   = __LINE__;
       Terminated = __LINE__;
    };

    k06a, 14 Мая 2010

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