Задать вопрос
  • Как выводить числа на семисегментный дисплей в Microprocesor Simulator 5v32?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    цифра три на левой части дисплея имеет код 9Е и чтобы вывести результат сложения 1 + 2 мне надо 3 как-то преобразовать в 9Е

    Типовое решение этой задачи -- через таблицу преобразования, где индекс -- это то, что нужно отобразить, а содержимое -- это то, что нужно записать в порт для отображения. Для вывода цифр от 0 до 9 и вашего дисплея таблица будет такой:
    0xfa, 0x0a, 0xb6, 0x9e, 0x4e, 0xdc, 0xfc, 0x8a, 0xfe, 0xde
    .
    Ответ написан
    1 комментарий
  • Как сохранить значения нескольких переменных в С++ 17?

    Adamos
    @Adamos
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int getInfo(const char* message) { 
        int value = 0;
        cout << message;
        cin >> value;
        return value;
    };
    int weightLoss(int normal_weight, int weight) { // здесь мы просто определяем на сколько нужно "похудеть"
        int result = normal_weight - weight;
        return result;
    };
    int main() {
        cout << "Это программа для опреределения, нужно ли вам похудеть." << endl;
        int normal_weight = getInfo("Введите оптимальный ваш вес в кг: ");
        int weight = getInfo("Введите нынешний вес в кг: ");
        if (weight > normal_weight) {
            int result = weightLoss(normal_weight, weight);
            cout << "Вам необходимо похудеть на " << result << " кг";
        };
    };
    Ответ написан
    Комментировать
  • Почему Doom портируют куда только можно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Doom - это была одна из первых игр где была реализована в полной мере техника BSP (Binary-Space-Partition). Это позволяло в реальном времени очень быстро сортировать и рендерить полигоны без привлечения Z-Buffer. (Рендеринг был чисто прогарммный. На то время еще не было ускорителей 3Д графики и видеокарточка умела только отображать память на экран. ) Игра не была по настоящему трехмерной. А только рализовывала 1 этаж. Рендерить надо было только пол и потолок. Для каждой точки где стоял персонаж. И наклонных горизонтальных поверхностей в ней не было как раз по этой причине. Ее называли 2.5-мерной игрой. Было также много идей оптимизации вычислений. Например вместо вещественных чисел - целые 32х битные с fixed point.

    В скобках замечу что это был 1993 год и на дворе было царство Intel 286/386. Это были машины с тактовой частотой меньше ваших телефонов (Pentium только только релизнулся и еще ни у кого не был). И трехмерный Doom был прорывом. На моем тогда еще 386SX от подтормаживал но играть было можно. И со звуком для SoundBlaster. И конечно это было лучше чем Wolfenstein.

    Аналогичное было реализовано в Duke Nukem 3d. Но Дюк был менее популярен ИМХО. Были и масса других 3д игр в жанке RPG но они были не такие динамичные. Походовые в основном.

    Вобщем сегодня если вы гейм-дев то вам желательно хотя-бы ознакомиться с техниками оптимизации которые были в Doom. Можно почитать и про Quake но это просто развитие идеи BSP деревьев для полного 3D с 5 или 6 степенями свободы. Еще можно почитать про реализацию игры Esctatica. Там не на полигонах а на шариках или эллипсах реализована игровая графика. Тоже интересно.

    UPD: Заменил MMORPG на RPG.
    Ответ написан
    6 комментариев
  • Как открыть папку в проводнике используя bat-файл?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ну во-первых, "Рабочий стол" - это в реальности директория "Desktop".
    Во-вторых арнумент "" не нужен, указывайте директорию первым аргументом.
    В-третих
    "%SystemRoot%\explorer.exe" "C:\Users\vern1\Desktop"
    сработает, а вот по поводу специально-витуальной директории OneDrive - сильно сомневаюсь...
    Ответ написан
    1 комментарий
  • Почему не выводится двумерный массив?

    @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 не русифицирована?

    У меня версия 19041. Такого пункта в данном месте нет.
    Возможно, вкладка добавляется драйверами на аудио (такое бывает например с тачпадом)
    Ответ написан
    3 комментария