C++ / Говнокод #26793 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
if (feet_yaw <= 58)
	{
		if (-58 > feet_yaw)
			player->EyeAngles()->y = body_max_rotation + player->EyeAngles()->y;
	}
	else
	{
		player->EyeAngles()->y = body_max_rotation - player->EyeAngles()->y;
	}
	if (player->GetAnimOverlay(6)->m_flPlaybackRate > 0.1)
	{
		for (int resolve_delta = 58.f; resolve_delta < -58.f; resolve_delta = resolve_delta - 20.f)
		{
			player->EyeAngles()->y = resolve_delta;
		}
	}

ресольвер

esoterik esoterik, (Updated )

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

C++ / Говнокод #26792 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
if (UpdateLBY)
			{
				auto m_flDelta = csgo->local->GetPlayerAnimState()->m_flGoalFeetYaw - csgo->local->GetPlayerAnimState()->m_flEyeYaw;

				if (m_flDelta >= 35.0 && m_flDelta <= -35.0) {
					// the first lby break is left.
					csgo->cmd->viewangles.y -= 122.f;
				}
				else {
					if (m_flDelta <= -35.0) {
						// the second lby break is right.
						csgo->cmd->viewangles.y += 122.f;
					}
					if (m_flDelta >= 35.0) {
						// the loop.
						csgo->cmd->viewangles.y -= 122.f;
					}
				}
				csgo->send_packet = false;
				return;
			}

esoterik esoterik, (Updated )

Комментарии (3, +3)

C++ / Говнокод #26789 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
#include <iostream>
#include <string>

using namespace std;

struct A
{
    A() { cout << "A::A()" << endl; }
    ~A() { cout << "~A::A()" << endl; }    
};

struct B
{
    B() { cout << "B::B()" << endl; }
    ~B() { cout << "~B::B()" << endl; }    
};

union U
{
    A a;
    B b;
    int n;
    
    U() { a = A {}; b = B {}; }
    ~U() {}
};

int main()
{
    U u;
}

Запустить тут: cpp.sh/3ewfw

Получается информация о том, какой сейчас объект активен в union где-то хранится.

OlegUP OlegUP, (Updated )

Комментарии (84, +84)

C++ / Говнокод #26762 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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, size_t size>
pure_nfsv4_op_array_tools::get_max_priority_opindex(
    const std::array<T, size>& array, const std::unordered_map<uint32_t, uint32_t>& priority_map size_t pos = 0)
{
    std::unordered_map<uint32_t, uint32_t>::const_iterator it, it_end = priority_map.end();
    uint32_t max_priority = 0;
    size_t i_max_priority = size;
    for(; pos < size; ++pos)
    {
        it = priority_map.find(array[pos].opcode)
        priority = (it != it_end) ? it->second : 4;   // Анскилл
        // лучше так:
        // priority = get_priority(opcode);
        if (priority > max_priority)
        {
            i_max_priority = pos;
            max_priority = it->second;
        }
    }

    return i_max_priority;
}

Какой дизайн-паттерн применить, если priority_map содержится в классе, методы которого используют эту функцию как вспомогательную?
То есть текущий файл подключается в файл-декларацию класса?
Можно, конечно, подключить его в .cc, но проблема останется.

OlegUP OlegUP, (Updated )

Комментарии (40, +40)

C++ / Говнокод #26758 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
Как же охуенно, когда есть тесты.
Сейчас хуярю питушню, некорректная работа которой может привести к оттоку пользователей и потере миллионов долларов дохода, и даже не страшно.
Заебенил на питончике новый тест, а потом пишу код, который пока ещё даже не компилится.
Ну и на крестах в нашем проекте писать одно удовольствие - если код компилируется, то скорее всего он уже правильный.

BJlADuMuPCKuu_nemyx BJlADuMuPCKuu_nemyx, (Updated )

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

C++ / Говнокод #26740 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
#include "courseparser.h"

courseParser::courseParser()
{

}

courseParser::courseParser(QString &XMLFilePath)
    : _XMLFilePath(XMLFilePath)
{
    startParsing();
}

void courseParser::startParsing()
{
    qDebug() << "Start working with xml";

    try {
        QFile _XMLFile(_XMLFilePath);
        QXmlStreamReader _XMLReader(&_XMLFile);

        if (_XMLFile.open(QIODevice::ReadOnly))
        {
            parseXml(_XMLReader);
            _XMLFile.close();
        } else
        {
            throw error::FileNotFound;
        }

    } catch (error causedError) {
        emit somethingWentWrong(causedError);
    }

    qDebug() << "Finish working with xml";
}

void courseParser::parseXml(QXmlStreamReader &XMLReader)
{
    qDebug() << "Start parsing xml";

    while(!XMLReader.atEnd())
    {
        QString elementBuffer;
        QString content;

        XMLReader.readNext();

        _actualToken = XMLReader.tokenString();
        elementBuffer = XMLReader.name().toString();
        _actualElement = (elementBuffer == "") ? _actualElement : elementBuffer;

        content = XMLReader.text().toString();

        checkToken();

        switch (_tokens.indexOf(_actualToken)) {
        case 0:
                processStartElement();
                break;
        case 1:
                processCharacters(content);
                break;
        case 2:
                processEndElement();
                break;
        default:
                break;
        }
    }

    qDebug() << "Finish parsing xml";
}

void courseParser::checkToken()
{
    if (!_tokens.contains(_actualToken))
        throw error::CorruptedFile;
}

void courseParser::checkElement()
{
    if (!(_elements.contains(_actualElement) || _subElements.contains(_actualElement)))
        throw error::CorruptedFile;
}

void courseParser::processStartElement()
{
    checkElement();

    switch (_elements.indexOf(_actualElement)) {
    case 0: _course = new course();
            qDebug() << "\tNew course created!";
            break;
    case 1: _lesson = new lesson();
            qDebug() << "\tNew lesson created!";
            break;
    case 2: _test = new test();
            qDebug() << "\tNew test created!";
            break;

̶Н̶а̶с̶р̶а̶л̶ сделал типо "парсер".
На сколько дерьмово получилось?

kpuBoKoder2000 kpuBoKoder2000, (Updated )

Комментарии (3, +3)

C++ / Говнокод #26728 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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>
#include <string>
#include <cmath>
using namespace std;
int perevod(char a)
{
  switch (a)
  {
    case 'A': {return 1; break;}
    case 'B': {return 2; break;}
    case 'C': {return 3; break;}
    case 'D': {return 4; break;}
    case 'E': {return 5; break;}
    case 'F': {return 6; break;}
    case 'G': {return 7; break;}
    case 'H': {return 8; break;}
  }
    return 0;
}
int proverka(char a)
{
  switch (a)
  {
    case '1': {return 1; break;}
    case '2': {return 2; break;}
    case '3': {return 3; break;}
    case '4': {return 4; break;}
    case '5': {return 5; break;}
    case '6': {return 6; break;}
    case '7': {return 7; break;}
    case '8': {return 8; break;}
  }
    return 0;
}
int main()
{
    string s;
    cin >> s;
    int x1, x2, y1, y2;
    x1=perevod(s[0]);
    x2=perevod(s[3]);
    y1=proverka(s[1]);
    y2=proverka(s[4]);
    if(s.length() != 5 || x1 == 0 || x2 == 0 || y1 == 0 || y2 == 0||s[2]!='-')
    {
        cout << "ERROR";
    }
    else{
    if(abs(x2 - x1) == 1 && abs(y2 - y1) == 2 || abs(x2 - x1) == 2 && abs(y2 - y1) == 1)
    {
        cout << "YES";
    }
    else
    {
        cout << "NO";
    }
    }
    return 0;
}

Простенькая проверка на возможность хода конем.

Verenick Verenick, (Updated )

Комментарии (93, +93)

C++ / Говнокод #26724 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
Ваш тимлид нашему в подметки не годится. Наш ебашит вообще адовый С++. Ну такой вот примерно рецепт усредненный,
 потому что вариаций масса. Берутся шаблоны, намазываются везде, писать понятно – это не про нашего тимлида. 
Он берет этот код, вываливает его в IDE и начинает писать. Добавляет в него огромное количество инструкций препроцессора,
 лямбд, макросов и вариативных шаблонов для вязкости, ассемблерные вставки сверху.
 Все это компилируется до дыма. Потом линкуется и не встает. Потом открывает IDE и начинает дебажить.
 При этом дебажит принтами, размазывая их по всему коду. Дебажит и приговаривает полушепотом ух бля.
 При этом у него на лбу аж пот выступает. Любезно мне иногда предлагает, но я отказываюсь.
 Надо ли говорить о том какой дичайший код потом? Багры такие, что обои от стен отклеиваются.

KoBudHbIu_nemyx KoBudHbIu_nemyx, (Updated )

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

C++ / Говнокод #26703 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
// https://godbolt.org/z/QAR_nT
// https://govnokod.ru/26701#comment550329
#include <cstddef>
#include <string>
#include <cassert>


struct assert_failure
{
    explicit assert_failure(const char *sz)
    {
        std::fprintf(stderr, "Assertion failure: %s\n", sz);
        std::quick_exit(EXIT_FAILURE);
    }
};

// эта херня не совсем корректно будет обрабатывать всякую хрень вроде ", , , " - оно это посчитает за 4 аргумента,
// и если считать " скобочки, тогда еще надо запилить обработку эскейп-последовательности, для хуйни типа "pidor\" govno"
// но мне лень эту хуйню допиливать.
constexpr std::size_t count_args(const char *s, std::size_t depth = 0, std::size_t pos = 0, std::size_t count = 0)
{
  if (s[pos] == '\0'){
    if(depth != 0)
      throw assert_failure("kakoi bagor)))\n");
    if(pos == 0)
      return 0;
    return count+1;
  }
  else if(s[pos] == '{')
  {
    return count_args(s, depth + 1, pos + 1, count);
  }
  else if(s[pos] == '}')
  {
    if(depth == 0)
      throw assert_failure("kakoi bagor)))\n");
    return count_args(s, depth - 1, pos + 1, count);
  }
  else if(depth == 0)
  {
    if(s[pos] == ',')
    {
      return count_args(s, depth, pos + 1,  count + 1);
    }
  }
  return count_args(s, depth, pos+1,  count); 
}

#define TO_STR(...) #__VA_ARGS__
#define ARGNUM(...) count_args(TO_STR(__VA_ARGS__))

#define krestogovnotypeof(a) std::remove_reference<a>::type

#define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; krestogovnotypeof(type) arr[ ARGNUM(__VA_ARGS__)  ];  } varname = {0, {__VA_ARGS__}}; varname.cnt < sizeof(varname.arr)/sizeof(type); ++varname.cnt )

int main(void)
{
  FOR_RANGE(int[2], k, {1,2}, {3,4}, {5,6}, {7,8})
    printf("{%d %d},\n", k.arr[k.cnt][0], k.arr[k.cnt][1]);
  return EXIT_SUCCESS;
}

Какая крестопараша((( В вижуальхуюдии вроде собирается, но проверить корректность работы не могу. Как вы этим днищекомпилятором вообще пользуетесь?

Было б круто, если бы были такие constexpr функции, которые в компилтайме могут куски исходного кода высирать как бы прямо в исходник, и потом уже чтоб это компилировалось

j123123 j123123, (Updated )

Комментарии (183, +183)