• Почему не выводится двумерный массив?

    @serhiops
    Python/JavaScript/C++
    Таке ж завдання виконував на останній лабораторній роботі.
    #include<iostream>
    #include<clocale>
    #include<iomanip>
    using namespace std;
    
    #define COLS 4
    
    int main(int argc, char** argv)
    {
        setlocale(LC_ALL, "Ukrainian");
        int w[][COLS] = {
            {1, 3, -8, 0},
            {-4, 6, 2, -5},
            {3, 7, 0, 6},
            {-3, 9, 11, -2}
        };
        cout << "Поточна матриця\n";
        for (int i{0}; i < COLS; ++i)
        {
            for (int j{0}; j < COLS; ++j)
                cout<< showpos <<w[i][j]<< setw(5);
            cout << '\n';
        }
    
        cout << "\nПеретворена матриця\n";
        for (int i{0}; i < COLS; ++i)
        {
            for (int j{0}; j < COLS; ++j)
            {
                if (w[i][j]>0 && w[i][j] < 6)
                    w[i][j] = 0;
                cout<< showpos <<w[i][j]<< setw(5);
            }
            cout << '\n';
        }
        return 0;
    }
    Ответ написан
    Комментировать
  • Как выделить память в другой функции, передавая pointer через аргументы?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    В вашем случае логичнее возвращать указатель на вделенную память.

    Если уж очень надо через аргументы, то передавайте указатель на указатель:
    static void update_callback(char **ptr)
    {
        *ptr = (char *)malloc(sizeof(char) * TEST_STR_SIZE + 1);
    ...


    P.s. В вашем коде утечка памяти. Вы выделяете память, потом единственный указатель на эту память переписываете указателем на TEST_STR.
    Ответ написан
    6 комментариев
  • Адреса сети, ip адреса?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Адрес подсети и адрес роутера от которого идет эта сеть - это одно и тоже?

    Нет.

    Адрес сети - это вообще IPадрес или это просто номер?

    Это IP-адрес.

    Под что уходят адреса 192.168.1.0 и 192.168.1.255 и 192.168.1.256 при маске 255.255.255.0

    192.168.1.0 - адрес подсети;
    192.168.1.255 - адрес бродкаста подсети;
    192.168.1.256 - не существует.
    Ответ написан
    Комментировать
  • Что не так с функцией на C++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    error C2835: user-defined conversion 'operator`double'' takes no formal parameters

    Он говорит тебе о том, что такая перегрузка: operator double (int limit) невозможна. Вторая ошибка -- это следствие первой.

    Определим в объекте Group две функции с одинаковым именем, например double Age(); и double Age(int limit);.

    Так бы и сделал, зачем оператор для этого перегружать?
    Ответ написан
    Комментировать
  • Может ли слетать активация MS Office, если теряется связь с сервером KMS?

    @SunTechnik
    KMS активация действует 180 дней. Автоматические попытки переактивации будут проводится до наступления этого срока.
    Ответ написан
    1 комментарий
  • Sendmail - насколько повышается уязвимость сервера?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    Внимание! Изменился адрес почты!
    Вот интересно - я использую sendmail c ... ээээ... 1997-го года (не дома у себя, а на корпоративном почтовике, с приличным таким трафиком) - и ни разу не ломали. Да, пытаются конечно. Greylisting, черные списки, все такое.
    Ответ написан
    1 комментарий
  • Как правильно использовать команды установки служб для Powershell?

    @BeatHazard
    Приветствую.
    Я устанавливаю Zabbix через Powershell таким скриптом:
    Copy-Item -Path "$PSScriptRoot\ZabbixAgent" -Recurse -Destination 'C:\Program Files' -Force
    Start-Process -FilePath "C:\Program Files\ZabbixAgent\bin\zabbix_agentd.exe" -ArgumentList "--config ""C:\Program Files\ZabbixAgent\conf\zabbix_agentd.conf"" --install" -Wait
    Start-Sleep 10
    Start-Service "Zabbix Agent"
    Ответ написан
    1 комментарий
  • Почему при передаче данных порт закрыт, а при принятии он открыт?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Для создания коннекта инициатор соединения использует случайный номер порта, и как правило его номер выше 1000. В вашем случае (скриншот) это порт 55616 с компьютера LINUX-SERVER.
    Ответ написан
    4 комментария
  • Как вернуть массив из структуры?

    В данном случае в вашей программе нет необходимости использовать массив, лучше завести 3 переменные в структуре ivector3d
    struct ivector3d {
      int x = 0;
      int y = 0; 
      int z = 0;
    };

    Затем обращаться к ним из функции scale.
    Если вас интересует возвращение массива из функции, то вам нужно вернуть указатель на первый элемент массива
    int* get() {
        return array;
      }

    Но это плохой способ, т.к. при таком подходе теряется информация о размере массива. Эту проблему можно решить возвращая размер массива в параметрах функции.
    int* get(int& size) {
        size = 3;
        return array;
      }

    Но, согласитесь, это не очень удобно. В таком случае предлагается изменить код на использование контейнера std::array.
    struct ivector3d {
    
      std::array<int, 3> array;
      std::array<int, 3> get() {
        return array;
      }
    };

    По итогу, программа будет выглядеть следующим образом
    #include <iostream>
    #include <array>
    
    using namespace std;
    
    struct ivector3d {
    
      std::array<int, 3> array;
      std::array<int, 3> get() {
        return array;
      }
    };
    
    void scale(ivector3d* v, int k) {
      for (int i = 0; i != 3; ++i)
        v->array[i] *= k;
    }
    
    
    int main() {
    
      ivector3d iv3d = {1,1,1};
      scale(&iv3d, 2);
    
      auto b = iv3d.get();
      for(auto i : b)
      {
          cout << i << " ";
      }
    }
    Ответ написан
    1 комментарий
  • Как работать с огромными массивами данных?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Вероятно не хватает памяти. Используйте опцию max-old-space-size.
    node --max-old-space-size=8192 index.js
    Если оперативной памяти тоже недостаточно, то тут уже нужен потоковый JSON парсер: например stream-json.
    Ответ написан
    Комментировать
  • Как работать с огромными массивами данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В этой операции мало смысла. Расскажи что будешь дальше делать - и я подскажу как. Возможно тебе нужен Pandas.
    Ответ написан
    Комментировать
  • Что в Windows занимает почти 50 ГБ?

    @rPman
    c:\AMD - содержит временные файлы установщика драйверов (например на видеокарту), можно (нужно) удалить
    c:\$WinREAgent содержит бакап системы перед очередным крупным обновлением, должен удалиться через некоторое время сам, если у тебя все работает - удаляй
    c:\Recovery смело удаляй, содержит бакап с обновления с другой версии (типа win8 -> win10), на сколько я понимаю крупные обновления win10 так же туда попадают
    c:\Users - пользовательские файлы (документы, рабочий стол), временные и часто приложения, для установки которых не требовались права администратора, чистить этот каталог сложно но там легко десяток гигабайт найти
    например %localappdata%\Temp (можно прямо так в проводнике написать) - временный каталог, где скапливается гигабайтами мусор который надо удалять
    hiberfil.sys — размером с ОЗУ. Если оно вам не надо powercfg -h off.
    используется для быстрого включения/выключения машины без закрытия программ (по умолчанию оно используется даже при обычном выключении, пользовательские программы закрываются но службы и др. остаются и делается hibernate (очень удобно на ноутбуках настроить гибернацию при закрытии крышки)
    Отключить это безопасно, но скорость включения компьютера заметно увеличится (не секунды а минуты на слабом железе).
    c:\System Volume Information - системный каталог, содержит файлы точек восстановления, удалять не надо но можно регулировать процент занимаемого места в настройках восстановления

    p.s. запусти штатный cleanmgr (Освобождение места на диске за счет удаления ненужных файлов) в нем кнопку Очистить системные файлы, и внимательно посмотри на чекбоксики, почти всегда достаточно их отметить все, и нажми ОК

    p.p.s. после чистки лишних файлов, можно еще нажать чекбоксик - Сжимать этот диск для экономии места в свойствах диска, это освободит примерно 30% занятого места (будет долго думать, до неск. часов, выдаст несколько раз ошибки, их можно игнорировать), делать это безопасно, в очень редких случаях (медленный процессор + ssd) будет легкое замедление записи, во всех остальных случаях даже ускорится работа с диском
    Ответ написан
    2 комментария
  • Почему при выводе массива в консоль пишется что-то странное?

    Nipheris
    @Nipheris Куратор тега C++
    Array-to-pointer decay.
    There is an implicit conversion from lvalues and rvalues of array type to rvalues of pointer type: it constructs a pointer to the first element of an array. This conversion is used whenever arrays appear in context where arrays are not expected, but pointers are:
    ...

    Ваш массив неявно сконвертился к указателю на int, т.к. оператор << класса std::ostream массивы выводить не умеет, а вот указатели - вполне себе.
    Ответ написан
    Комментировать
  • Как так оказалось, что часть Windows 10 не русифицирована?

    vla3d
    @vla3d
    У меня версия 19041. Такого пункта в данном месте нет.
    Возможно, вкладка добавляется драйверами на аудио (такое бывает например с тачпадом)
    Ответ написан
    3 комментария
  • Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Никак не пойму что за ошибка, и что она хочет от меня.

    Ошибка -- обращение к памяти, к которой нельзя обращаться, первая ссылка по запросу sigsegv в гугле.
    Хочет она от тебя чтобы ты веделил память для colonies[i].aparts перед тем как к ним обращаться.
    Ответ написан
    Комментировать
  • Есть ли хоть какое-то преимущество использования функтора перед обычной функцией в данном случае?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    У функтора перед функцией есть только одно преимущество - это наличие состояния функтора, которое может меняться между обращениями к его функциональному оператору и влиять на его поведение. Функтор настраивается эксклюзивно, функция - по понятным причинам - только глобально.
    У функции перед функтором тоже есть преимущество - это адрес функции, по которому сразу можно начать ее исполнение. У функтора всегда будет два адреса - адрес метода функционального оператора и адрес самого функтора.

    Исходя именно из этих преимуществ и следует выбирать между функтором и функцией.
    Скажем, если бы нужно было nums вписать в CSV таблицу в виде матрицы, то проще использовать функтор. Создать его, настроить поток вывода, символ-разделитель столбцов, количество выводов до перехода на следующую строку и передать в std::for_each.
    Если такая настройка поведения не требуется, от функтора лучше отказаться в пользу функции во всех случаях.

    Функтор используется в реализации идиомы делегата и коллбека. Делегаты позволяют универсальным образом хранить самые разные точки исполнения кода и безопасно проводить по ним исполнение.
    Если использование делегатов оправдано необходимостью, в делегаты оборачивают даже указатели на функцию, чтобы сохранить единообразие подхода к управлению исполнением.
    Ответ написан
    Комментировать
  • Как узнать размер массива, который был передан в шаблонную функцию?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Если коротко, правила автоматического вывода шаблонных аргументов предусматривают вывод полного типа для переданного аргумента при инстанцировании шаблона функции.

    Что это означает на практике? В языке есть термин массива статического размера. Частным примером такого массива является строковой литерал. Конкретно у строкового литерала из простых символов тип будет таким: const char[N], где N - это размер памяти под строковой лиерал, в байтах.

    Таким образом, если сделать такое объявление шаблона
    template< typename TValue >
    void Foo( TValue& value ); // (1)

    то при инстанцировании как Foo( "Hello" ); аргумент TValue определится как const char[6].
    И мы довольно легко можем воспользоваться этим механизмом. Нужно только дать пояснение, как и во что стоит выводить шаблонные аргументы.

    Шаблон можно записать вот так:
    template< typename TValue, size_t LENGTH >
    void Foo( TValue (&value)[ LENGTH ] ); // (2)

    В этом случае при инстанцировании как Foo( "Hello" );, аргумент TValue будет выведен как const char, а нетиповой аргумент LENGTH будет выведен в значение 6.
    Собственно, все. Размер переданного массива получен.

    Такой шаблон считается более специализированным по отношению к определению выше. Поэтому при наличии обоих шаблонов, инстанцирование для прочих типов будет выбирать первый шаблон, а инстанцирование для массивов статического размера будет проваливаться во второй, как в более специализированный.

    В чем суть модификаторов в параметрах шаблона

    Если первый шаблон объявить как
    template< typename TValue >
    void Foo( TValue value );

    то инстанцирование произойдет не для типа массива статического размера, а для указателя на первый элемент этого массива. Это произойдет из-за неявного приведения. Стандарт явно пишет что массив статического размера по значению не передается.
    Ссылка позволяет избежать приведения. И опять же, сам массив в функцию передан не будет, только ссылка.
    И именно поэтому во втором шаблоне тоже используется ссылка.

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

    Параметр такой "другой" функции лучше всего определить универсальной ссылкой и использовать идеальную передачу. Тогда все будет работать правильно.
    Ответ написан
    2 комментария
  • Как массово переименовать файлы по порядку?

    wisgest
    @wisgest
    Не ИТ-специалист
    Переименование файлов в текущем каталоге будет выглядеть так:
    setlocal enableextensions enabledelayedexpansion
    set /a "num = 0"
    for %%I in (*.jpg) do (
    	set /a "num += 1"
    	ren "%%~I" !num!.ren_jpg
    )
    ren *.ren_jpg *.jpg
    endlocal
    Ответ написан
  • В каком направление двигаться начинающему системному администратору?

    @ewgenc
    А что вы хотите? Можно сети изучать дальше, Linux администрирование, DevOps, базы данных, виртуализацию и т.п. За вас никто не решит.
    Ответ написан
    1 комментарий