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

    −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
    /*
    	Программа для генерации и вывода разряженной матрицы
    	Специально для сайта govnokod.ru
    */
    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    
    // Объявление переменных
    const int first_index_size=20;
    const int second_index_size=50;
    char matrix_array[first_index_size][second_index_size];
    
    enum border_style{
    	line,single 
    };
    
    void borders(border_style matrix_border)
    {
    	switch(matrix_border)
    	{
    		case 0:
    			for(int i=0; i<(second_index_size+2); i++)
    				std::cout<<"#";
    			std::cout<<"\n";
    			break;
    		case 1:
    			std::cout<<"#";
    	}
    }
    
    void rand_func_init()
    {
    	// Инициализация функции rand()
    	srand(time(0));
    	rand();
    }
    
    void matrix_init_zero()
    {
    	// Инициализация матрицы нулём	
    	for(int i=0; i<first_index_size; i++)
    		for(int t=0; t<second_index_size; t++)
    			matrix_array[i][t]=0;
    }
    
    void matrix_init_rand()
    {
    	// Заполнение матрицы
    	for(int i=0; i<first_index_size; i++)
    	{
    		int init_num=rand()%11;
    		while(init_num)
    		{
    			init_num--;
    			matrix_array[i][rand()%50]=149;
    		}
    	}
    }
    
    void matrix_print()
    {
    	// Вывод матрицы	
    	borders(line);
    	for(int i=0; i<first_index_size; i++)
    	{
    		borders(single);
    		for(int t=0; t<second_index_size; t++)	
    			std::cout<<matrix_array[i][t];
    		borders(single);
    		std::cout<<"\n";
    	}
    	borders(line);
    }
    
    int main()
    {
    	rand_func_init();
    	matrix_init_zero();
    	matrix_init_rand();
    	matrix_print();
    	return 0;
    }

    Разряженная матрица 20x50.
    Количество ненулевых значений от 0 до 10.

    BelCodeMonkey, 18 Августа 2018

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

    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
    #include <iostream>
    #include <type_traits>
    #include <utility>
    #include <array>
    
    template<size_t Size, typename T, typename FunctorType, size_t... idx>
    constexpr std::array<decltype(std::declval<FunctorType>().operator()(std::declval<T>())), Size>
                  map_impl(const std::array<T, Size> & arr, FunctorType && f, std::index_sequence<idx...>)
    {
        return std::array{ f(std::get<idx>(arr))... };
    }
    
    template<size_t Size, typename T, typename FunctorType>
    constexpr std::array<decltype(std::declval<FunctorType>().operator()(std::declval<T>())), Size>
                  map(const std::array<T, Size> & arr, FunctorType && f)
    {
        return map_impl(arr, f, std::make_index_sequence<Size>{});
    }
    
    struct MyFunctor {
        constexpr float operator()(int arg)
        {
            return static_cast<float>(arg * arg) / 2.0f;
        }
    };
    
    int main()
    {
        constexpr std::array arr{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    
        auto arrMappedFunctor = map(arr, MyFunctor{});
        auto arrMappedLambda = map(arr, [](int x) constexpr { return static_cast<float>(x * x) / 2.0f; });
    
        for (auto && x : arrMappedFunctor) {
            std::cout << x << ' ';
        }
        std::cout << std::endl;
        for (auto && x : arrMappedLambda ) {
            std::cout << x << ' ';
        }
        std::cout << std::endl;
        return 0;
    }

    0.5 2 4.5 8 12.5 18 24.5 32 40.5 50
    0.5 2 4.5 8 12.5 18 24.5 32 40.5 50


    Метушня выходит на новый уровень: полноценный map в compile-time. Поддерживает как ручные функторы с перегруженным operator(), так и constexpr-лямбды. При помощи небольшой модификации возможно реализовать поддержку кортежей с произвольными типами.

    gost, 18 Августа 2018

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

    0

    1. 1
    inline constexpr size_t hardware_destructive_interference_size = implementation-defined;

    This number is the minimum recommended offset between two concurrently-accessed objects to avoid
    additional performance degradation due to contention introduced by the implementation.


    Бля, пиздец. Модулей нет, строк нет, а комитет мутит какую-то хуиту космической глупости.

    gost, 12 Августа 2018

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

    +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
    #include <iostream>
    #include <string>
    
    int main()
    {
        std::string s1  = "";
        const char s2[] = "";
    
        std::cout << std::boolalpha
                  << std::empty(s1) << std::endl
                  << std::size(s1) << std::endl
                  << std::empty(s2) << std::endl
                  << std::size(s2) << std::endl;
    
        s1.assign("", 1);
        std::cout << std::empty(s1) << std::endl
                  << std::size(s1) << std::endl;
        system("pause");
        return 0;
    }

    true
    0
    false
    1
    false
    1


    Ой-вэй, абстракции потекли!

    gost, 11 Августа 2018

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

    −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
    #include <iostream>
    
    class ParusProject
    {
        public:
            void start () const
            {
                std::cout << "Майбутнє вже тут!";
            }
    };
    
    void MakeLvivGreatAgain()
    {
        ParusProject *city = new ParusProject;
        city->start();
    }
    int main()
    {
        MakeLvivGreatAgain();
        return 0;
    }

    Увидено на билборде.
    1. Нахуя делать целый класс для выдачи одного неизменяемого стринга?
    2. int main() {…} в оригинале не было, компилятор ругался ошибкой, пришлось самому дописывать.
    3. Эквивалент хеллоуворлда с кириллицей на 21, мать его, строку.

    shite, 10 Августа 2018

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Чего такого умеют кресты, что не умеет Си?
    
    Шаблоны - никто не пользует.
    
    Перегрузка операторов - вообще дурь какая-то: не понятно чего ожидать от полюса или минуса.
    
    Очевидный ответ - объекты , а так уж они нужны? Ну вот есть объект - библиотека работы с сокетами. Создал экземпляр, заполнил поля с адресом и портом, выполнил метод connect. Попользовался, освободил память. И чем оно лучше, чем если бы я запилил структуру и набор функций для работы с ней?
    
    За скобки вынесем области применения, где преимущества объектного подхода очевидны: игры, ГУЙ и прочее. Поговорим об остальном.

    Псто не мое.
    Заходите на "огонек": https://www.linux.org.ru/forum/development/14396202

    Elvenfighter, 08 Августа 2018

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

    +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
    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include <ctime>
    using namespace std;
    
    string pswdGen(int quantity) {
        srand(time(0));
        char chars[] = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890@\#\$\%\&\-\+\!\/\_"; // Символы, из которых будет состоять пароль 
        string password;
        for(int i = 0; i < quantity; i++) {
            password += chars[rand() % (sizeof(chars)/sizeof(*chars))]; // Добавить рандомный символ из списка в пароль
        }
        return password;
    }
    int main() {
        int charNo;
        cout << "How many characters do you want in the password?" << endl;
        cin >> charNo;
        cout << "Your new password is: " << pswdGen(charNo) << endl;
        return 0;
    }

    Генерит произвольные пароли. Говно?

    shite, 05 Августа 2018

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

    −3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #include <iostream>
    using namespace std;
    
    void wtf() {
     return 0;
    }
    int main() {
     return wtf();
     cout << wtf();
    }

    Решил нопейсать ватафак-код.
    Классика жанра. Ретурн в воидовской функции. Плюс действие после ретурна.

    shite, 03 Августа 2018

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

    0

    1. 1
    https://www.youtube.com/watch?v=UcO6OXVZGyI

    Можно промотать в конец.

    OlegUP, 02 Августа 2018

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

    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
    #include <iostream>
    #include <memory>
    #include <thread>
    #include <chrono>
    #include <mutex>
     
    struct Base
    {
        Base() { std::cout << "  Base::Base()\n"; }
        // Note: non-virtual destructor is OK here
        ~Base() { std::cout << "  Base::~Base()\n"; }
    };
     
    struct Derived: public Base
    {
        Derived() { std::cout << "  Derived::Derived()\n"; }
        ~Derived() { std::cout << "  Derived::~Derived()\n"; }
    };
     
    void thr(std::shared_ptr<Base> p)
    {
        std::this_thread::sleep_for(std::chrono::seconds(1));
        std::shared_ptr<Base> lp = p; // thread-safe, even though the
                                      // shared use_count is incremented
        {
            static std::mutex io_mutex;
            std::lock_guard<std::mutex> lk(io_mutex);
            std::cout << "local pointer in a thread:\n"
                      << "  lp.get() = " << lp.get()
                      << ", lp.use_count() = " << lp.use_count() << '\n';
        }
    }
     
    int main()
    {
        std::shared_ptr<Base> p = std::make_shared<Derived>();
     
        std::cout << "Created a shared Derived (as a pointer to Base)\n"
                  << "  p.get() = " << p.get()
                  << ", p.use_count() = " << p.use_count() << '\n';
        std::thread t1(thr, p), t2(thr, p), t3(thr, p);
        p.reset(); // release ownership from main
        std::cout << "Shared ownership between 3 threads and released\n"
                  << "ownership from main:\n"
                  << "  p.get() = " << p.get()
                  << ", p.use_count() = " << p.use_count() << '\n';
        t1.join(); t2.join(); t3.join();
        std::cout << "All threads completed, the last one deleted Derived\n";
    }

    https://en.cppreference.com/w/cpp/memory/shared_ptr

    Объясните почему "reset" не грохнул инстанс в других потоках?

    guestinxo, 02 Августа 2018

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