• Как сократить код с подпрограмой?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Эти три функции идентичны, с точностью до переименования локальных переменных. Вы три раза написали одно и тоже. Можно 2 функции просто удалить и использовать отсавшуюся три раза.

    Ну какая разница, как у вас там переменная называется sA или sB - результат будет один и тот же.

    Да, может вы путаетесь, но аргумент в функции можно тоже переменовать. Хоть там и написано int masivA(int* a), этот a - это аргумент. Он никак не привязан к массиву a в main(). Туда можно передать и a и b и любой другой массив.
    Ответ написан
    4 комментария
  • Как "забыть" переменную на c/c++?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Переменные прекращают существование после завершения блока, в котором объявлены. Соответственно, используйте маленькие функции, объявляйте переменные как можно ближе к месту их использования и компилятор обо всём позаботится сам.
    Ответ написан
    Комментировать
  • В чем подвох TCC?

    gbg
    @gbg
    Любые ответы на любые вопросы
    -Кто это, Билли?
    -Это неуловимый Джо!
    -А почему никто его не может поймать?
    -А потому что он даром никому не нужен, Боб!

    Так вот, компилятор, который только на пути к совместимости с C99 и умеет выдавать только код под x86, находится примерно в таком же положении, как вышеупомянутый Джо.
    Ответ написан
    Комментировать
  • Как решать задачу используя динамическое программирование?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Какой-то идиот задачу составлял.
    Во-первых, для N<60 ответ помещается в 64-битный целочисленный тип, который есть сейчас практически во всех языках программирования. Тут не надо ничего придумывать для избегания переполнения.
    Во-вторых, чтобы избежать переполнения, в таких задачах обычно просят выдать ответ по какому-то большому модулю. И последнее, как ответ может получиться нецелым - это просто загадка. Пример решения явно неверен.

    А так, динамическое программирование тут простое: Пусть F(N,K) - сколько существует невзрывоопасных стопок длины N, таких что в конце есть ровно K опасных контейнеров (очевидно, 0 <= K < 4). Это не совсем прям то, что вам нужно в задаче, но количество опасных стопок - это количество всех стопок (2^N) минус количество невзрывоопасных, поэтому это ДП нам подходит.

    Пересчет очень прост:

    F(N,K>0) = F(N-K,0)
    F(N,0) = F(N-1,0)+F(N-1,1)+F(N-1,2)+F(N-1,3)


    Если на конце K плохих контейнеров, то до этого точно должен быть хороший контейнер. Если на конце стоит хороший контейнер - то до него может быть 0..3 плохих контейнера.

    База: F(0,0) = 1, F(0, K>0) = 0

    Ответ: 2^N - F(N,0)-F(N,1)-F(N,2)-F(N,3)
    Ответ написан
    2 комментария
  • Как откинуть 5 число с массива?

    @antares4045
    наиболее прозрачный на мой взгляд способ (си уже позабылось, а под рукой компилятор только плюсов был: возможны некоторые синтаксические шероховатости)

    #include "stdio.h"
    
    void shiftArray(int* array, int* length, int startIndex=5){
        int index;
        if(startIndex < *length){
            for(index=startIndex + 1; index < *length; index++){
                array[index-1] = array[index];
            }
            *length -= 1;
        }
    }
    
    
    int main()
    {
        int len1 = 10;
        int len2 = 3;
        int arr1[len1];
        int arr2[len2];
    
        for(int i=0;i<len1;i++)
            arr1[i] = i;
        for(int i=0;i<len2;i++)
            arr2[i] = i;
        shiftArray(arr1, &len1);
        shiftArray(arr1, &len2);
        for(int i=0;i<len1;i++)
            printf("%d ", arr1[i]);
        printf("\n");
        for(int i=0;i<len2;i++)
            printf("%d ", arr2[i]);
        printf("\n");
        return 0;
    }
    Ответ написан
    Комментировать
  • Как создать язык программирования?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Все создатели ЯП именно так и начинали – с вопроса на тостере.
    Ответ написан
    6 комментариев
  • С чего начать писать СУБД?

    maaGames
    @maaGames
    Погроммирую программы
    Со спецификации БД. Будет спецификация, то и вопросов по структуре и организации не возникнет.
    Ответ написан
    Комментировать
  • Проект для новичка?

    Посоветую просматривать вопросы по тегу
    C++
    данного ресурса, возможно пытаясь решить вопросы тега вы приобрете определенный опыт работы с данным языком.
    Ответ написан
    1 комментарий
  • Как работает malloc?

    @bellatriks
    fisherman
    функция malloc(size_t size) выделяет память, равную size байт. В примере это явно не учтено, и нижеследующий for loop пройдется по неинициализированной памяти (1000 байт / 8 байт указатель = 128). Лучше всего использовать calloc из ответа выше, передав требуемое количество элементов и их размер.
    Ответ написан
    Комментировать
  • Что должен знать linux user?

    Для получения знаний продвинутого пользователя рекомендуем изучить книгу "Внутреннее устройство Linux" Брайан Уорд -
    https://itsecforu.ru/wp-content/uploads/2018/01/uo...
    Ответ написан
    Комментировать
  • Что должен знать linux user?

    AlexeyKolodchenko
    @AlexeyKolodchenko
    sudo cat /dev/ass | grep “the Adventure”
    Самое главное знание линуксоида - это знать как правильно сформулировать вопрос для поисковой системы и форума. Если этого не знаешь и не умеешь, то остальных знаний никогда не получишь.
    Ответ написан
    3 комментария
  • Как реализовать ошибку компьютера?

    Kozack
    @Kozack Куратор тега JavaScript
    Thinking about a11y
    надо что бы противник не идеально отбивал мяч


    Afafks123132132165, Ну так просто добавьте ему некоторое отклонение. Рассчитываете идеальную позицию, в которую должен встать бот, и добавляете к ней случайное значение в указанном диапазоне, скажем [-0.2; +0.2].
    Ответ написан
    2 комментария
  • Как работает malloc?

    @LASHKOAG
    Си, Робототехника, Linux, Телеметрия, Разработчик
    "... void * calloc( size_t number, size_t size );
    Функция calloc выделяет блок памяти для массива размером — num элементов, каждый из которых занимает size байт, и инициализирует все свои биты в нулями."

    cppstudio.com/post/846
    Ответ написан
    Комментировать
  • Как работает malloc?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    От себя добавлю есть функции по очистке памяти, которые заполняют буфер по вашему адресу каким либо значением обычно 0
    Ответ написан
    Комментировать