1. 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)
  2. 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)
  3. 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)
  4. 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)
  5. 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)
  6. 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)
  7. C++ / Говнокод #3235

    +993

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

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

    k06a, 14 Мая 2010

    Комментарии (19)
  8. 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)
  9. 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)
  10. C++ / Говнокод #3232

    +1005

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #define KB * 1024
    #define MB KB KB
    #define GB MB KB
    #define TB GB KB
    
    int main( ... )
    {
       char * arr = new char [16 MB];
       ...
    }

    k06a, 14 Мая 2010

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