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

    +13

    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
    if(ortho){
                if( abs(e->x() - line.p1().x() ) * 2 < abs( e->y() - line.p1().y() ) ){
                    y = e->y();
                    x = line.p1().x();
                }else if(abs(e->x() - line.p1().x() ) > 2 * abs( e->y() - line.p1().y() )){
                    x = e->x();
                    y = line.p1().y();
                }else if(abs(e->x() - line.p1().x() ) * 2 > abs( e->y() - line.p1().y() ) &&
                         abs(e->x() - line.p1().x() ) < abs( e->y() - line.p1().y() )){
                    if((e->x() < line.p1().x() && e->y() < line.p1().y()) || (e->x() > line.p1().x() && e->y() < line.p1().y())){
                        x = e->x();
                        y = line.p1().y() - abs(line.p1().x() - e->x());
                    }else if((e->x() > line.p1().x() && e->y() > line.p1().y()) || (e->x() < line.p1().x() && e->y() > line.p1().y())){
                        x = e->x();
                        y = line.p1().y() + abs(line.p1().x() - e->x());
                    }
                }else if(abs(e->x() - line.p1().x() ) < 2 * abs( e->y() - line.p1().y() ) &&
                         abs(e->x() - line.p1().x() ) > abs( e->y() - line.p1().y() )){
                    if((e->x() < line.p1().x() && e->y() < line.p1().y()) || (e->x() < line.p1().x() && e->y() > line.p1().y())){
                        y = e->y();
                        x = line.p1().x() - abs(line.p1().y() - e->y());
                    }else if((e->x() > line.p1().x() && e->y() > line.p1().y()) || (e->x() > line.p1().x() && e->y() < line.p1().y())){
                        y = e->y();
                        x = line.p1().x() + abs(line.p1().y() - e->y());
                    }
                }else{
                    x = e->x();
                    y = e->y();
                }

    Abbath, 14 Октября 2013

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

    +8

    1. 1
    2. 2
    3. 3
    4. 4
    n = strlen(pName);
    name = new char[n + 1];
    memset(name, 0, n + 1);
    memcpy(name, pName, n);

    боянчик. std::string наверное религия не позволяет. а strdup() слишком С. oh wait...

    Dummy00001, 09 Октября 2013

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

    −4

    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
    static Singleton * g_pInstance = NULL;
    
    Singleton* Singleton::sharedInstance()
    {
        if (g_pInstance)
            return g_pInstance;
        else {
            g_pInstance = new Singleton();
            if (g_pInstance->init()) {
                return g_pInstance;
            } else {
                delete g_pInstance;
                g_pInstance = NULL;
            }
            return g_pInstance;
        }
    }

    Ещё из жизни синглтонов. Даёшь больше return'ов!

    Deacon, 08 Октября 2013

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

    +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
    // in .h file
    class Singleton
    {
    public:
        Singleton();
        ~Singleton();
    private:
        static Singleton* m_Instance;
        friend Singleton& GetInstance();
    };
    
    inline Singleton& GetInstance()
    {
        assert(Singleton::m_Instance);
        return *Singleton::m_Instance;
    }
    
    // in .cpp file
    Singleton* Singleton::m_Instance = NULL;
    
    Singleton::Singleton()
    {
        assert(!m_Instance);
        m_Instance = this;
    }
    
    Singleton::~Singleton()
    {
        m_Instance = NULL;
    }

    Вот такую реализацию синглтона увидел в одном проекте.
    ЗЫ: Для его корректной работы, в main было написано конечно же:
    main() {
    Singleton* s = new Singleton;
    ...
    delete s;
    }

    Deacon, 08 Октября 2013

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

    +8

    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
    void SaveEncryptedFile( const char *text, int len, const char* filename )
    {
    	char* pEncryptedText = new char[strlen(text)+1];
    	string x1 = "you'll";
    	string x2 = "never";
    	string x3 = "get a";
    	string x4 = "password";
    	char l_pBuf[255];
    	sprintf(l_pBuf,"%d",30*11/3);
    	string result = x1+x2+x2+x1+l_pBuf+x3;
    	encryptString(text,pEncryptedText,result.c_str(),strlen(text),result.length()); // там внутри xor
    
    	FILE* pFile = fopen(filename, "wb");
    	if (pFile)
    	{
    		fwrite(pEncryptedText,sizeof(char),len,pFile);
    		fclose(pFile);
    	}
    
    	delete[] pEncryptedText;
    }

    Нашёл в рабочем проекте. Для "расшифровки" файла используется ещё одна такая же функция.

    Deacon, 07 Октября 2013

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

    +8

    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
    const Registry & Registry::getInstance()
    {
    	Registry *instance = RegistrySingleton::instance();
    	if (!instance->mRootNode) {
    		instance->load();
    	}
    	return *instance;
    }
    
    void Registry::load()
    {
    	try {
    		// ...
    		if (!mReader) {
    			mReader = XMLReaderFactory::createXMLReader();
    		}
    		// ...
    		mReader->parse( ... );
    	} catch (...) {
    		// ...
    		throw; // удачи всем пользователям обрабатывать исключения xerces...
    	}
    }

    боян синглтонно-абстрактный для чтения xml конфигурации с помощью xerces.

    и не только ошибки не обрабатаешь (потому что getInstance() их бросает, угадай какой именно вызов из сотен загружает конфигурацию), но и в добавок народ не впечатал как многопоточность сделать правильно (RegistrySingleton это специализация шаблона который синхронизирует инициализацию mInstance переменной, и только).

    Dummy00001, 07 Октября 2013

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

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    int eval (const Expr& e)
    {
        Match(e)
        Case(const Value& x) return x.value;
        Case(const Plus& x) return eval (x.e1)+eval(x.e2);
        Case(const Minus& x) return eval(x.e1)−eval(x.e2);
        Case(const Times& x) return eval(x.e1)∗eval(x.e2);
        Case(const Divide& x) return eval(x.e1)/eval (x.e2);
        EndMatch
    }

    Бьёрн Страуструп выбирает борщ.
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3449.pdf
    http://www.linux.org.ru/forum/development/9525806

    Заметим, что не только Страуструп раскаялся в прошлом. Кармак с энтузиазмом рассказывает, как с головой погрузился в Haskell и Scheme, объясняет, почему хаскель невероятно крут и почему сегодня он бы, вероятно, сделал QuakeScheme вместо QuakeC. Он пишет на хаскеле порт wolf3D.

    LispGovno, 05 Октября 2013

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

    +61

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    УЧИМСЯ ТРАЛИРОВАТЬ ВМЕСТИ С PragramistOtBoga
    
      PragramistOtBoga: ЗДАРОВА ЛАЛКА АЗАЗА
      ЛАЛАКА ПРАГРАМИСТ: ПРевет не тралируй миня пажалузта!!!!!!
      PragramistOtBoga: Ты лах карочи))0))нульскопка Мамку С++ и бал азазазаза лалка затарлин))0
      ЛАЛАКА ПРАГРАМИСТ: Супкпздц((9 миня апять затралил гиниальный траль PragramistOtBoga

    Сиводня маэстра тралинга PragramistOtBoga научит вас тралиравать лалак
    Штобы к завтра дамашку зделали! Смарите у миня праверю))0

    PragramistOtBoga, 04 Октября 2013

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

    +1

    1. 1
    std::AIDS

    an0nym, 04 Октября 2013

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

    +77

    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
    #include <iostream>
    using namespace std;
    
    int binsearch(int* arr, int s, int r, int l, int t){
        int m=(l+r)/2;
        if (*(arr+m) == s) return m; // t - искомое
        if (m == l || m == r) return 0;
        if (*(arr+m) < s) binsearch(arr, s, m, r, t);
        else binsearch(arr, s, l, m, t);
        }
    
    int main()
    {
        int n, k;
        cin >> k;
        cin >> n;
        int A[n-1];
        for (int i = 0; i < n; i++){
            cin >> A[i];
        }
        cout << binsearch(A, k, n-1, 0, 0);
    }

    Требуется найти число K в упорядоченном массиве из N элементов и
    определить чему равен номер соответствующего элемента массива.
    Если элемент не найден, то вывести 0.

    Входные данные
    В первой строке расположено искомое число К.
    Во второй - количество элементов в массиве N <= 10000.
    Далее расположены N целых чисел, упорядоченных по возрастанию.

    Выходные данные
    Выведите наименьший номер найденного значения, или 0, если элемент не найден.

    Проблема у меня в том, что не получается найти минимальный из подходящих ( Помогите пофиксить!

    aesc_smirnov, 03 Октября 2013

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