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

    +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
    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
    #include <iostream.h>
    
    typedef short *(*bar2)(double);
    
    typedef char *(*bar3)();
    
    typedef long long int **(* bar5)();
    
    typedef bar5 (** bar4)(bar3);
    typedef bar4 (** bar1)(bar2);
    
    
    typedef long long int *(*(*(*(*(**bar0)(short *(*)(double ))))(char *(*)()))());
    
    
    long long int ** func5()
    {
    	static long long int  A = 42;
    	static long long int* B = &A;
    	return &B;
    }
    
    char* func3()
    {
    	return new char;
    }
    
    bar5 func4(bar3 A)
    {
    	return &func5;
    }
    
    short* fun2(double A)
    {
    	return new short;
    };
    
    bar4 fun1(bar2 A){
    	static void* p = &func4;
    	return (bar4)&p;
    }
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
    	void* p = &fun1;
    
    	bar0 foo0 = (bar1)&p;
    	bar1 foo1 = (bar1)&p;
    
    	long long int ** pr1 = (*(*(*foo1)(&fun2))(&func3))();
    	long long int ** pr0 = (*(*(*foo0)(&fun2))(&func3))();
    
    	std::cout<<**pr1<<std::endl;
    	std::cout<<**pr0<<std::endl;
    	std::cin.get();
    
    	return 0;
    }

    разбирался с указателями на функции

    sanchousf, 25 Января 2012

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

    +130

    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
    BOOL CMarkup::Search(CString OprName, CString strSQL, short nType)
    {
    
    ...
    	
    	sCommandLine = sPath.Left(nPos)+ _T("\\Getorder.exe search ")+OprName+_T(" ")+strSQL+_T(" ")+strType;
    	::wcscpy(cCommandLine, sCommandLine);
    
    	BOOL ret = CreateProcess(NULL, cCommandLine, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
    	if (ret) {
    		CloseHandle(pi.hThread );						//Close the thread handle as soon as it is no longer needed.
    		WaitForSingleObject(pi.hProcess, INFINITE);		//Suspend our execution until the child has terminated.
    		GetExitCodeProcess(pi.hProcess ,&dwExitCode);	//The child process terminated;get its exit code.
    		//if(dwExitCode == STILL_ACTIVE) TerminateProcess(pi.hProcess, 0);
    		CloseHandle(pi.hProcess);						//Close the process handle as soon as it is no longer needed.
    	}
    
    	CString ss,s;
    	ss = _T("s.txt");
    
    	CStdioFile in;
    	if(!in.Open (sPath+_T("\\")+ss,CFile::modeRead | CFile::typeBinary))
    		return TRUE;
    
    	while(in.ReadString(s))
    	{
    		s.TrimLeft();
    		s.TrimRight();
    		if(s != _T("**********")) continue;
    
    		ORDERTYPE m_OrderData;
    
    		in.ReadString(s);
    		s.TrimLeft();
    		s.TrimRight();
    		m_OrderData.OprName = s;
    
    		in.ReadString(s);
    		s.TrimLeft();
    		s.TrimRight();
    		m_OrderData.Language =s;
    
    		in.ReadString(s);
    		s.TrimLeft();
    		s.TrimRight();
    		m_OrderData.OrderNo =s;
    
    ...
    
    	}
    
    	in.Close();
    	DeleteFile(sPath+_T("\\")+ss);

    Прислали исходники приложения на C++ с MFC. Там просто один сплошной ГК от начала и до конца, но это место просто убило.

    Задача - найти заказ в базе данных MSSQL по SQL-запросу. Для этого они запускают отдельное приложение .NET, которое подключается к базе и дампит запись в текстовый файл, а приложение C++ из него читает.

    someone, 25 Января 2012

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

    +141

    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
    #include <iostream>
    using namespace std;
    int main()
    {
      for (int i=1; i<=5;i++)
      {
          for (int i2=1;i2<=5;i2++)
          {
              //Левый и правый фланг
              if ((i2==1) || (i2==5)) { cout << "+";}
              //Верхний и нижний
              if ((i==1) || (i==5))
              {cout << "+";} else {cout << "-";}
    
          }
          cout << "\n";
      }
      return 0;
    }

    По идее, программа должна генерировать сетку вида "Квадрат", где "+" покраям, а в середине "-".
    Есть рабочий вариант

    #include <iostream>
    using namespace std;
    int main()
    {
    for (int i=1; i<=5;i++)
    {
    for (int i2=1;i2<=5;i2++)
    {
    //Левый фланг
    if ((i2==1)) { cout << "+";}
    //Верхний и нижний
    if ((i==1) || (i==5)) {cout << "+";} else {cout << "-";}
    //Правый фланг
    if (i2==5) {cout << "+";}

    }
    cout << "\n";
    }
    return 0;
    }
    Но он не подходит, так как в самом квадрате будут генерировать опр. структуры.

    Splice, 21 Января 2012

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

    +150

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int MyNewClass::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
    {
        _id = QWidget::qt_metacall(_c, _id, _a);
        if (_id < 0)
            return _id;
        return _id;
    }

    Из Qt 4.8.0, генерится сие чудо и находится в файле moc_ИмяВашегоКласса.

    Glaciuse, 20 Января 2012

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

    +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
    QSqlQueryModel model,model1,model2;
    ...
    model2.setQuery("SELECT * FROM cardInfoChange");
    while(model2.canFetchMore())
        model2.fetchMore();
    ...
     for(int i = 0; i < model2.rowCount(); i++)
            {
                QString t =  model2.record(i).value(1).toString().toUtf8()+
                        ";"+model2.record(i).value(2).toString().toUtf8()+";"+model2.record(i).value(3).toString().toUtf8()+
                        ";"+model2.record(i).value(4).toString().toUtf8()+
                        ";"+model2.record(i).value(5).toString().toUtf8()+
                        ";"+model2.record(i).value(6).toString().toUtf8()+
                        ";"+model2.record(i).value(7).toString().toUtf8()+
                        ";"+model2.record(i).value(8).toString().toUtf8()+
                        ";"+model2.record(i).value(9).toString().toUtf8()+
                        ";"+model2.record(i).value(10).toString().toUtf8()+
                        ";"+model2.record(i).value(11).toString().toUtf8()+
                        ";"+model2.record(i).value(12).toString().toUtf8()+
                        ";"+model2.record(i).value(13).toString().toUtf8()+
                        ";"+model2.record(i).value(14).toString().toUtf8()+
                        ";"+model2.record(i).value(15).toString().toUtf8()+
                        ";\n";
                f.write( t.toAscii());
            }

    Продолжаем стрелять по воробьям из пушки.

    Особое внимание на строки 4 и 5 так как QSqlQueryModel предназначена для вывода отображения в QTableView она не загружает все данные сразу а делает это постепенно.

    Ну и напоследок шедевральный способ записи полученных данных в файл.

    ir4y, 19 Января 2012

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

    +1001

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    bool IsDigit(char cKey, const char *cKeys) {
    	for (int i = 0; i < strlen(cKeys); i++)
    		if (cKeys[i] == cKey)
    			return true;
    	return false;
    }

    FalseCoder, 18 Января 2012

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

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    class beer
        {public: beer(){beer::in();}
         private: void in();void chek(int);void out(int);};
    main(){beer yeeah;}
    void beer::in()
        {int N;std::cout << "Input N: ";std::cin>>N;int mValue[N];
         for(int i=0;i<N;i++){std::cout << "Input ["<<i+1<<"] = ";std::cin>>mValue[i];}
         for(int i=0;i<N;i++){beer::chek(mValue[i]);};}
    void beer::chek(int Value){for(int i=2;i<Value;i++){if(Value%i==0){return;};};beer::out(Value);}
    void beer::out(int Value){std::cout<<Value<<std::endl;}

    Задачка на 45-50 баллов(по 50 бальной шкале), 2 курс технического ВУЗа

    KesrOne, 18 Января 2012

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

    +156

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    string Delimiter(string Text, int Index, const char* Delimiter) {
    	int n = 0, find = 0;
    	for (int i = 0; i <= Index; i++) {
    		find = Text.find(Delimiter, n);
    		if (i == Index) {  
    			return Text.substr(n, find - n);
    		}
    		n = find + 1;
    	}
    	return "";
    }

    FalseCoder, 17 Января 2012

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

    +993

    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
    void inline WriteXY(int X, int Y, byte szText, WORD fColor = 0x01F) {
    	DWORD cWritten;
    	COORD ptCoord = {X - 1, Y - 1};
    	gotoxy(X, Y);
    	cout << char(szText);
    	cout.flush();
    	FillConsoleOutputAttribute(hStdOut, fColor, 1, ptCoord, &cWritten);
    	return;
    }
    
    void inline WriteXY(int X, int Y, string szText, WORD fColor = 0x01F) {
    	DWORD cWritten;
    	COORD ptCoord = {X - 1, Y - 1};
    	gotoxy(X, Y);
    	cout << szText.c_str();
    	cout.flush();
    	FillConsoleOutputAttribute(hStdOut, fColor, strlen(szText.c_str()), ptCoord, &cWritten);
    	return;
    }

    Функция и её прототип

    FalseCoder, 17 Января 2012

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

    +142

    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
    enum class TClockWise
    {
        CW=true,
        CCW=false
    };
    
    template<class T>
    std::ostream& operator<<(std::ostream &out, const TClockWise Cow)
    {
        switch(Cow)
        {
            case TClockWise::CW: out << "CW"; break;
            case TClockWise::CCW: out << "CCW"; break;
            default: MUST_NEVER_CAL_THAT;
        }
        return out;
    }

    Говногость, 16 Января 2012

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