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

    0

    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
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    #include <iostream>
    #include <string>
    using namespace std;
    long double opros(char s);
    bool proverka(string stroka, int i, bool (*func)(int, string, bool &));
    bool magia(string stroka, int i, bool (*func)(int, string, bool &));
    int main() {
        long double a;
        for (char i = 'a'; i < 'd'; i++) { a = opros(i);
            cout << "\n\nЗначение:\n" << a << " - корректное!\n";}}
    bool f_break(int i, string s, bool &z){
     return true;}
    bool sub_func_mantissa(int j, string stroka, bool &flag, int &index) {
        switch (stroka[j]) {
            case 'e':
            case 'E':
                if ((flag) or (j == (stroka.length() - 1))) return false;
                flag = true;
                index = j;
                break;
    } return true;
    }
    bool sub_func_vetka1(int j, string stroka, bool &flag) {
        if (stroka[j] == '.') {
            if (flag) return false;
            flag = true;
        }
        return true;
    }
    bool zikl_vetka(string stroka, int i, bool &flag, int &index, bool (*p_base_func)(int, string, bool &), char Drive) {
        int j = 1;
        bool flag_zikla = true;
        for (j += i; j < stroka.length(); j++) {
            if (not (Drive == 'M')) {
                if (not ((flag_zikla) or (p_base_func(j, stroka, flag)))) return false;
                flag_zikla = proverka(stroka, j, f_break);
            } else {
                if (not sub_func_mantissa(j, stroka, flag, index)) return false;
            }
        }
        return true;
    }
    bool vetka1(bool &flag, int i, string stroka) {
       int index;
        return zikl_vetka(stroka, i, flag, index, sub_func_vetka1, 'O');
    }
    bool vetka2_dalshe(int i, string stroka, bool &z) {
        bool flag = false;
        int index;
        return zikl_vetka(stroka, i, flag, index, f_break, 'O');
    }
    bool vetka2(string stroka) {
        return magia(stroka, 1, vetka2_dalshe);
    }
    bool mantissa(string stroka, bool &flag, int &index) {
        return zikl_vetka(stroka, -1, flag, index, f_break, 'M');
    }
    bool Dalshe(int i, string stroka, bool &z) {
        int index_mant;
        bool flag_dot = false;
        bool flag_mant = false;
        if (not mantissa(stroka, flag_mant, index_mant)) return false;
        else {
            if (flag_mant)  {
                string sub1 = stroka.substr(0, index_mant);
                string sub2 = stroka.substr(index_mant+1);
                return (vetka1(flag_dot, i, sub1) and vetka2(sub2));}
            else return vetka1(flag_dot, i, stroka);}}
    bool proverka(string stroka, int i, bool (*func)(int, string, bool &)) {
        cout << " ---> proverka ";
        bool z = true;
        switch (stroka[i]) {
        case '0': case '1': case '2':case '3':case '4': case '5': case '6': case '7': case '8': case '9': return func(i, stroka, z); break;
        default:
            return false;
            break;}}
    bool magia(string stroka, int i, bool (*func)(int, string, bool &)) { //3
        switch (stroka[0]) {
        case '-':
        case '+': if (stroka.length() > 1) return proverka(stroka, i, func);
            else return false; break;
        default:
            return proverka(stroka, 0, func); break;}}
    bool general_proverka(string stroka) {
        return magia(stroka, 1, Dalshe);}
    long double opros(char s) { //1
        string argument;
        cout << "\nВведите значение: " << s << ": ";
        getline(cin, argument);
        if (argument.length() == 0) {
            cout << "Вы не ввели значение!\n";
            return opros(s);
        }
        else if (not general_proverka(argument)) {
            cout << "\n\nНекорректное значение!\n";
            return opros(s);
        }
        else return strtold(argument.c_str(), nullptr);
    }

    Проверяет введённую строку на корректность соответствия символов,
    входящих в тип - long double. Если введённая строка корректна, приводит
    данную строку к типу - long double. Иначе - просит заново ввести значение.

    Westnik_Govnokoda, 21 Декабря 2020

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

    +1

    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
    //Попробуйте программно смоделировать разговор людей.Всего есть 10 людей.Каждый человек имеет имя(строку) и возраст(число).
    //Возраст каждого человека генерируется рандомно из диапазона от 20 до 40, а имена состоят из следующего списка: 
    //Александр, Андрей, Анастасия, Ирина, Наталья, Павел, Роман, Светлана, Сергей, Татьяна.
    //Любой человек способен выполнять два действия :
    //-здороваться с другим человеком;
    //-рассказывать о себе.
    //Люди делятся на 3 типа(разные классы) :
    //    Тип №1 : Формалисты.Здороваются со всеми следующим образом : Здравствуйте, <имя>!, где <имя> — это имя человека, с которым он здоровается.
    //    Тип №2 : Неформалы.Со всеми здороваются : Привет, <имя>!.
    //    Тип №3 : Реалисты.Если возраст собеседника меньше / равен или не больше, чем на 5 лет, то здороваются следующим образом : Привет, <имя>!, в противном случае — Здравствуйте, <имя>!.
    //    В программной реализации приветствие должно быть реализовано как полиморфный метод, принимающий человека в качестве параметра и возвращающий строку.
    //    Рассказ о человеке является строкой формата "Меня зовут Вася, мой возраст 21 лет и я неформал" (вместо Вася используется имя любого другого человека, 
    //    вместо 21 возраст этого человека, вместо неформал может быть формалист, либо реалист).Как видите у людей с грамматикой не всё в порядке, 
    //    и они говорят лет после любого числа — непорядок, это нужно обязательно исправить.
    //    Программа должна показать информацию обо всех людях.Затем все люди должны поздороваться друг с другом в следующем порядке : 
    //    первый здоровается со вторым, затем второй с первым, а затем первый с третьим, третий с первым и т.д.Например :
    //    Петя : Привет, Вася!
    //    Вася : Здравствуйте, Петя!
    //    Петя : Привет, Женя!
    //    Женя : Привет, Петя!
    
    
    unique_ptr<Person>& createPerson()
    {
        switch (getRandomNumber(0, 2))
        {
        case 0:
            {
            unique_ptr<Person> person = make_unique<Formalist>(RANDNAME_0_10, RANDAGE_20_40);
            return person; 
            }
        case 1:
            {
            unique_ptr<Person> person = make_unique<Neformal>(RANDNAME_0_10, RANDAGE_20_40);
            return person;
            }
        case 2:
            {
            unique_ptr<Person> person = make_unique<Realist>(RANDNAME_0_10, RANDAGE_20_40);
            return person;
            }
        default:
            {
            unique_ptr<Person> person = nullptr;
            return person;
            }
        };
    }
    
    void createGroup(vector<unique_ptr<Person>>& group, int8_t size)
    {
        unique_ptr<Person> tempPerson = nullptr;
        for (int i = 0; i < size; ++i)
        {
            tempPerson = std::move(createPerson());
            group.push_back(tempPerson);
        }
    }

    Не могу понять как инициализировать массив в createGroup() через unique_pointers. Нужно ли было изначально возвращать shared pointers из createPerson()? Или использовать перемещения с unique_pointers? И куда по правильному впихивать using namespace std; если не в global scope? Спасибо заранее

    Полный код
    https://repl.it/@radionnazmiev/Ravesli#Ravesli_12_H/main.cpp

    radionnazmiev, 06 Декабря 2020

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

    +1

    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
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    #include <iostream>
    #include <ctime>
    #include <random>
    #include <windows.h>
    #include <cstdint>                             // Для int8_t;
    #include <string>   
    #include <string_view> 
    #include <array>                               
    #include <iomanip>                           // setw();
    
    using namespace std;
    
    const array <string, 94> arr = { "олицетворение", "патология", "субтропики", "лекарь", "предосторожность", "монархист",
            "социум", "клякса", "борщевик", "лемур", "старьевщик", "марсельеза", "послушание", "прикол", "шифровка", "фантом", "субмарина",
            "гладиолус", "сообщество", "гениальность", "трансформация", "пальпация", "усушка", "благополучие", "капелла", "недоумение",
            "траверс", "проныра", "полоскание", "побережье", "закись", "кровопиец", "сыродел", "продвижение", "совместимость", "двойственность",
            "сабботаж", "рассылка", "куратор", "прорицание", "синтез", "негодяй", "паралич", "тяжелоатлет", "освободитель", "кунжут",
            "мордобой", "ностальгия", "хлорофилл", "первооткрыватель", "гипотенуза", "шкатулка", "психиатр", "маэстро", "прыть",
            "пустомеля", "здравоохранение", "алиментщик", "параметр", "аннотация", "пудинг", "прыжок", "пневматика", "штырь", "фасовщик",
            "совместитель", "свиновод", "яйцеварка", "зверобой", "тундра", "вогнутость", "рикошет", "компромисс", "фоторепортер",
            "кордебалет", "нумизмат", "гипербола", "желтизна", "брезент", "ботфорты", "гостинец", "символист", "акустика", "психика",
            "удивление", "уховертка", "снежинка", "меценат", "атомоход", "контрабас", "брюква", "миловидность", "спринтер", "пунктир" };
    
    int randNumber(int min, int max)
    {
        random_device rd;  //Will be used to obtain a seed for the random number engine
        mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
        uniform_int_distribution<int> distrib(min, max);
        return distrib(gen);
    }
    
    string_view randString()
    {
        return (string_view)arr[randNumber(0, arr.size())];
    }
    
    void printGuessedChar(string_view input, string_view randWord)
    {
        for (int i = 0; i < randWord.size(); ++i)
        {
            for (int j = 0; j < input.size(); ++j)
            {
                if (randWord[i] == input[j])
                {
                    cout << randWord[i];
                    break;
                }
            }
            cout << '*';
        }
        cout << endl;
    }
    
    int randNumber(int min, int max)
    {
        random_device rd;  //Will be used to obtain a seed for the random number engine
        mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
        uniform_int_distribution<int> distrib(min, max);
        return distrib(gen);
    }
    
    void theGame()
    {
        cout << "Добро пожаловать в игру 'Виселица'!" << endl;
        string_view randWord = randString();
        cout << "Компьютер сгенерировал слово" << endl;
        cout << "Слово - ";
        for (int i = 0; i < randWord.size(); ++i)
        {
            cout << '*';
        };
        cout << endl;
        int8_t count = 0;
        string input;
        do
        {
            cout << "У вас " << 6 - count << " попыток угадать слово." << endl << "Введите букву: ";
            if (cin.fail()) // если предыдущее извлечение оказалось неудачным,
            {
                cin.clear(); // то возвращаем cin в 'обычный' режим работы
                cin.ignore(32767, '\n'); // и удаляем значения предыдущего ввода из входного буфера
            }
            cin >> setw(1) >> input[count];
            printGuessedChar(input, randWord);
            ++count;
        } while (count != 6);
    }
    
    int main()
    {
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        srand((unsigned)time(nullptr));
        theGame();
    }

    Заколебался уже с этим кодом. Не получается впихнуть пользовательский ввоз в массив...Первая попытка освоить std::string и std::string_view. Ну и в целом советы по коду приветствуются. Благодарю
    //Давайте напишем популярную игру, которая называется «Виселица».В игре вам нужно угадать слово, которое загадала программа, буква за буквой.
    //Игрок угадывает одну букву за раз и может ошибиться только 6 раз(после этого он проигрывает).
    //Необходимый функционал вашей программы :
    //создайте массив слов(например, поместите туда 40 слов) и рандомным образом выберите 1 слово для угадывания;
    //программа должна выводить длину всего слова и отображать буквы, которые угадал игрок;
    //после каждого неудачного угадывания, программа должна сообщить игроку, сколько у него осталось попыток неверно указать букву, прежде чем он проиграет;
    //если человек указал букву, которую ранее уже угадывал, и она не дублируется в слове, то не наказывайте его, а просто предоставьте возможность угадать букву еще раз.
    //Например, компьютер загадал слово INTERESTING :
    //
    //Добро пожаловать в игру "Виселица"!
    //Слово - _ _ _ _ _ _ _ _ _ _ _
    //Угадайте букву : S
    //Верно - _ _ _ _ _ _ S _ _ _ _
    //Угадайте следующую букву : F
    //Неверно!Такой буквы нет, у вас осталось 5 попыток неверно указать букву!
    //...

    radionnazmiev, 30 Ноября 2020

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

    0

    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
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    #include <iostream>
    #include <ctime>
    #include <string>
    #include <random>
    #include <algorithm>
    #include <iomanip> // для ограничения количества вводимых симолов для std::cin
    
    void compUsrWthCmptr(std::string userInput, std::string computerInput)
    {
        std::reverse(userInput.begin(), userInput.end());//  Считаем правильно угаданные позиции
        std::reverse(computerInput.begin(), computerInput.end());
        int guessedPositions{ 0 };
        for (int i = 0; (i < userInput.length()) && (i < computerInput.length()); ++i)
        {
            if (userInput[i] == computerInput[i])
            {
                guessedPositions++;
            }
        }
        std::string::iterator it_userInput;
        std::string::iterator it_computerInput;
        it_userInput = std::unique(userInput.begin(), userInput.end()); // Удаляем повторяющиеся цифры
        userInput.resize(std::distance(userInput.begin(), it_userInput));
        it_computerInput = std::unique(computerInput.begin(), computerInput.end());
        computerInput.resize(std::distance(computerInput.begin(), it_computerInput));
        int guessedDigits{ 0 }; //  Считаем количество правильно угаданных цифр без учета повторяющихся
        for (int i = 0; i < userInput.length(); ++i)
        {
            for (int x = 0; x < computerInput.length(); ++x)
            {
                if (userInput[i] == computerInput[x])
                {
                    guessedDigits++;
                }
            }
        }
        std::cout << "  Угадано: " << guessedDigits << ". Соответствует своим разрядам: " << guessedPositions << std::endl << std::endl;
    };
    void startTheGame()
    {
        int pcsRandomNumber = getRandomNumber(0, 999);      //Загаданое число.
        std::cout << "  Компьютер загадал трехзначное число от 0 до 999!\n" << "  Это: " << pcsRandomNumber << std::endl << std::endl;
        std::string pcNumber{ std::to_string(pcsRandomNumber) };
        bool win = false;
        do
        {
            int usersGuess = getUsersGuess();
            std::string guess{ std::to_string(usersGuess) };
            std::cout << "  Ваш вариант : " << guess << std::endl;
            compUsrWthCmptr(guess, pcNumber);
            if (usersGuess == pcsRandomNumber)
            {
                win = true;
                std::cout << "  *** Вы угадали число " << pcsRandomNumber << "!***\n";
            }
        } while (!win);
    };
    int getUsersGuess()
    {
        while (true) // цикл продолжается до тех пор, пока пользователь не введет корректное значение
        {
            std::cout << "  Введите коректное значение: ";
            int a;
            std::cin >> std::setw(3) >> a;
            if (std::cin.fail()) // если предыдущее извлечение оказалось неудачным,
            {
                std::cin.clear(); // то возвращаем cin в 'обычный' режим работы
                std::cin.ignore(32767, '\n'); // и удаляем значения предыдущего ввода из входного буфера
                std::cout << "  Предыдущее извлечение оказалось неудачным. Попытайтесь еще раз.\n\n";
            }
            else
            {
                if (a >= 1000 || a < 0)
                {
                    std::cin.ignore(32767, '\n'); // удаляем лишние значения
                    std::cout << "  Введенное число вне требуемого диапазонате. Попытайтесь еще раз.\n\n";
                }
                else
                {
                    std::cin.ignore(32767, '\n'); // удаляем лишние значения
                    return a;
                }
            }
        }
    }
    int getRandomNumber(int min, int max)
    {
        return static_cast<int>(rand() % (max - min + 1) + min);
    }
    
    int main()
    {
        setlocale(LC_ALL, "Russian");
        srand(static_cast<unsigned int>(time(0)));
        startTheGame();
        return 0;
    }

    Начинающий говнокодер просит оценить его код. Где/что можно улучшить если возможно. Благодарю
    //Напишите программу реализующую игру «Угадай число».Компьютер загадывает число от 0 до 999 (используйте генерацию случайных чисел),
    //а пользователь угадывает его.На каждом шаге угадывающий делает предположение, а задумавший число — сообщает, сколько цифр из числа угаданы
    //и сколько из угаданных цифр занимают правильные позиции в числе.Например, если задумано число 725 и выдвинуто предположение,
    //что задумано число 523, то угаданы две цифры(5 и 2) и одна из них занимает верную позицию.

    radionnazmiev, 25 Ноября 2020

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

    +2

    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
    ShipType Ship::getShipTypeByLength(int length)
    {
        switch (length) {
            case 1: return BOAT;
            case 2: return CRUISER;
            case 3: return DESTROYER;
            case 4: return BATTLESHIP;
            case 5: return AIRCRAFT_CARRIER;
    
            default:
                std::cout << "No ship meets the given length: " << length << std::endl;
                return ERROR_SHIP;
        }
    }
    
    int Ship::getShipLengthByType(ShipType type)
    {
        switch (type) {
            case BOAT: return 1;
            case CRUISER: return 2;
            case DESTROYER: return 3;
            case BATTLESHIP: return 4;
            case AIRCRAFT_CARRIER: return 5;
    
            default:
                std::cout << "No ship meets the given type: " << type << std::endl;
                return 0;
        }
    }
    
    int Ship::getShipAmountByType(ShipType type)
    {
        switch (type) {
            case BOAT: return 4;
            case CRUISER: return 3;
            case DESTROYER: return 2;
            case BATTLESHIP: return 1;
            case AIRCRAFT_CARRIER: return 1;
    
            default:
                std::cout << "No ship meets the given type: " << type << std::endl;
                return 0;
        }
    }
    
    Coordinates Ship::getFirstBlockCoordinatesByShipData(int x, int y, int length, Orientation orientation)
    {
        Coordinates result;
        if (orientation == HORIZONTAL) {
            result.x = x - (length / 2);
            result.y = y;
        } else {
            result.x = x;
            result.y = y - (length / 2);
        }
        return result;
    }
    
    Coordinates Ship::getLastBlockCoordinatesByShipData(int x, int y, int length, Orientation orientation)
    {
        Coordinates result;
        if (orientation == HORIZONTAL) {
            result.x = x + (length / 2) + (length % 2) - 1;
            result.y = y;
        } else {
            result.x = x;
            result.y = y + (length / 2) + (length % 2) - 1;
        }
        return result;
    }

    Вот некоторые полезные функции из игры «Морской Бой», которую я зачем-то написал.

    oaoaoammm, 21 Ноября 2020

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

    +1

    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
    #include <iostream>
    using namespace std;
    
    int del(int s)
    {
    	int k = 0;
    	for (int i = 1;i <= 20;i++)
    	{
    		if (s % i == 0)
    		{
    			k++;
    		};
    
    	};
    	return k == 20;
    
    }
    
    int main()
    {
    	unsigned long int q = 1;
    	for (int i = 1;i <= 20;i++)
    	{
    		q = q*i;
    	}
    	for (int i=1;i<=q;i++)
    	{
    		if (del(i))
    		{
    			cout << i;
    			break;
    		}
    	}
    	return 0;
    }

    2520 - самое маленькое число, которое делится без остатка на все числа от 1 до 10.

    Какое самое маленькое число делится нацело на все числа от 1 до 20?

    Что за неоптимизированное говно я сейчас сделал.........

    NikEral7, 19 Ноября 2020

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    pituhs.reserve(kurochkas.size());
    for (auto& kurochka : kurochkas) {
        pituhs.push_back(kurochka.snesti_jajichko());
    }

    reserve заебал.
    Коллега (да, тот же самый) пихает его везде.
    Я понимаю зачем это нужно, но блядь, я читаю на одну строку больше, чем мог бы, и лишний раз напрягаю мозг.
    И это сливается со словом «reverse».

    Кстати, оптимизаторы могли бы такую хуйню сами детектить, и резервировать сами.

    3_dar, 12 Ноября 2020

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

    +2

    1. 1
    Class::Class(Pethu pethu) : pethu(std::move(pethu)) {

    std::move заебал. Просто взял, блядь, — и заебал!
    Чем это лучше передачи по ссылке?

    guestinxo, 12 Ноября 2020

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

    +1

    1. 1
    2. 2
    using T = int;
    0 .T::~T();

    Чем-то меня эта (полностью валидная) коньструкция очаровала.

    gost, 12 Ноября 2020

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

    0

    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
    void two(string str, int *mstr,int l)    //Замена цифр в строке
    {
        string base[10] = { "ноль","один","два","три","четыре","пять","шесть","семь","восемь","девять" };    //Строки для замены
        int i,j,t;
    
        for (i = 0;i < l;i++)
        {
            str.insert(mstr[i]+1, base[atoi(&str[mstr[i]])]);    //Вставка после числа в строку
            t = base[atoi(&str[mstr[i]])].length();        //Смещение последующих чисел в строке
            str.erase(mstr[i], 1);        //Удаление цифры в строке
    
            for (j = i; j < l;j++)        //Новые позиции чисел в строке
            {
                mstr[j] += t-1;
            }
    
        }
    
        cout << "Изменённая строка: " << str << endl;
    }

    По заданию требовалось обработать символьную строку так, чтобы цифры записывались числительными. В этой функции идет замена цифр в строке. Массив str - строка символов, mstr - int массив, куда записывается позиция числа в строке (т.е в строке aaaa1aaa mstr[0]=4), а l - количество чисел в строке.
    Код не мой. Это ад. Неработающий.
    Сидел, ржал.

    ShadowCat, 07 Ноября 2020

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