Задать вопрос
  • Деление меньшего на большее возвращает ноль. Как исправить?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    нет и нет... почти все слова. почти правильные...

    но суть в том, что если оба операнда int то и результат будет int...

    начните с этого
    Console.WriteLine((1.0 / 7).ToString());
    или
    Console.WriteLine((1 / 7.0).ToString());
    или
    Console.WriteLine((1f / 7).ToString());
    или
    Console.WriteLine((1 / 7d).ToString());
    или
    Console.WriteLine((((double)1) / 7).ToString());
    или
    Console.WriteLine((1 /((float)(7))).ToString());
    для верности сравните с
    Console.WriteLine(((float)(1 / 7)).ToString("0.##"));

    ... обдумайте, почему во последнем примере, приведени к "плавающей точке" запоздало... и будет полное понимание, удачи..

    ps

    ... по быренькому можно тут все проверить - https://dotnetfiddle.net/

    Давно я конечно не писал на C#..

    ..или изменилась правила деления?

    ... а тут огорчу )))... в C# так было всегда (еще точнее - во всех строготипизированых ЯП)
    Ответ написан
    2 комментария
  • Си. Как удалить символы стоящие перед знаком *?

    @res2001
    Developer, ex-admin
    Удалить нельзя. Можно только остаток строки после звездочки скопировать/перенести на место звездочки.
    Т.к. память будет перекрываться, то нужно использовать функцию memmove, memcpy в этом плане не безопасна.
    Ответ написан
    6 комментариев
  • Как подключиться с компьютера?

    semenenko88
    @semenenko88
    Системный администратор
    Я так понял, что на смартфоне уже установлен Linux, можно туда установить либо x2go, или vnc сервер. Дальше подключаться с компьютера к смартфону.
    Ответ написан
    Комментировать
  • Возможно ли вывести "Hello world" на assembler (fasm) под win 64bit?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Assembler
    Седой и строгий
    Исполняемые файлы формата COM невозможно запустить без эмулятора на 64-разрядной Windows.
    Ответ написан
    Комментировать
  • Как добавить перенос строки в строку?

    @slavenski
    Android developer
    Думаю, что вам нужно писать либо:
    String  a = ""; 
    a+="text\n"

    либо:
    String  a = ""; 
    a+="text" + "\n"
    Ответ написан
    Комментировать
  • Стоит ли изучать высшую математику?

    Yunique33
    @Yunique33
    В обыденной жизни плотного знания школьного курса хватит с головой. А для развития я бы посоветовал логические задачки порешать.
    Ответ написан
    2 комментария
  • Время программы 2,062 надо 2 сек, как сделать?

    @res2001
    Developer, ex-admin
    Можно немного сэкономить, если прочитать сразу весь файл в буфер, а в массив загонять через std::stringstream или вообще руками. Аналогично и с записью - сначала преобразуете в текстовый буфер, затем оптом пишете в файл одной операцией. Файл при этом открывайте как бинарный.
    Возможно, если применить другой алгоритм сортировки то же будет увеличение производительности. В стандартной библиотеке далеко не самый быстрый алгоритм.
    Ответ написан
    Комментировать
  • Современные ОСи так делают? Компрессия кода в оперативке?

    Jump
    @Jump
    Системный администратор со стажем.
    что сейчас в многоядерных системах RAM бывает вся занята, а процы - отдыхают
    Бывает и так, бывает и по другому, это просто один из вариантов.

    А вот интересно, эта память RAM занята сжатыми данными (кодом, данными)?
    Такое бывает иногда.

    Не быстрее будет отдать половину ядер процессам, чтобы они внутри памяти все паковали и распаковывали при обращении
    Нет.

    А то задолбался по 3 минуты ждать переключения между экселевскими окнами, когда их много открыто.
    Добавьте памяти - будут все в памяти, будут быстро переключаться.

    Можно пинать ногами :) если вопрос глупый, но попутно объясните - почему
    Вот представьте - у вас куча инструмента, и материалов.
    Можно их разложить на рабочем столе, чтобы было удобно работать - но это нужен большой стол, иначе все не влезет.
    Можно их плотно запихать в ящик, утрамбовать, и закрыть ящик на замок.

    А теперь представьте как быстро вы сможете достать инструмент из ящика? Вам придется открыть ящик вытащить половину инструментов, достать нужный, положить все остальные обратно, аккуратно упаковать, использовать инструмент, вытащить половину инструментов из ящика, положить туда использованный инструмент, запихать обратно все вытащенные инструменты -и.т.д.
    В итоге если у вас инструменты не упакованы - вы берете один инструмент.
    Если они у вас упакованы - прежде чем взять один инструмент вы должны переложить десять инструментов.

    Сейчас норма для комфортной офисной работы - это 8Гб оперативной памяти и SSD диск под систему.
    Ответ написан
    Комментировать
  • Как создать массив пикселей в С++ QT?

    IGHOR
    @IGHOR Куратор тега Qt
    Qt/C++ DEV/CTO
    А чем вам не нравиться работа с QImage? Это же и есть массив пикселей.
    Ответ написан
    3 комментария
  • Где поискать опенсорс проекты на С++?

    Nipheris
    @Nipheris Куратор тега C++
    А как вы искали, если не секрет? Я хочу узнать, как искать так, чтобы ничего не найти.

    Запрос "c++ open source projects" даёт первой же ссылкой набирающие популярность C++-проекты на гитхабе, среди которых TensorFlow, биткоин, OpenCV, Электрон, Solidity и прочие монстры индустрии. Время поиска - ~20 секунд.
    Ответ написан
    1 комментарий
  • Какую IDE выбрать для микроконтроллеров stm32?

    Punk_Joker
    @Punk_Joker
    Software Engineer в ВО Овен
    Attolic TrueStudio for STM32
    Ответ написан
    Комментировать
  • В какую область копать, чтобы создать программу - "мини драйвер"?

    @Xilian
    Программист 1С, сетевые технологии, SQL
    Тут нужен не "Драйвер", а как говорят в IT "преобразователь потока". Нужна служба (win) или демон (linux). Который будет брать данные с com-порта и переупаковывать в udp/tcp. Я бы делал на пуле потоков.
    Ответ написан
    Комментировать
  • ОЗУ из Ноутбука в ПК, возможно ли?

    @alexalexes
    ОЗУ - возможно.
    Недавно заказал себе такой адаптер, так как 2 * 4 Гб планки валяются без дела.
    Продать - только за бесценок можно, а в хозяйстве пригодятся.
    Ответ написан
    8 комментариев
  • Как ОС определяет из какого устройства надо достать данные?

    @chromimon
    Это уже давным давно реализовано аппаратно. Уж лет 40 наверное как.

    Просто обращается к данным.
    Если данных реально нет (страница памяти помечена как сброшенная на диск) - процессор автоматически возбуждает исключение и управление передается той части ОС, что отвечает за подкачку данных с диска в оперативную память.
    Ответ написан
    Комментировать
  • Как сделать мерцающиЕ звездЫ?

    @alex_ak1
    Для каждой звезды храни счетчик.
    Каждый кадр счетчик уменьшается.
    Если он меньше 5 звезда увеличивается на 5. Если меньше 10, на 10, если меньше 15 - опять на 5.
    Если меньше 0 - счетчик становится равен случаному числу (100) + 100.
    Итого каждая звезда будет 15 кадров увеличиваться и это будет повторятся для каждой через 100-200 кадров.
    Ответ написан
    Комментировать
  • Как вызывается родительский конструктор в C++?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    В С++ нужно отдельно реализовывать конструктор потомка
    class Base {
        public:
        Base(int _i): i(_i) {//блок инициализации
        }
        private: 
        int i;
    }
    
    class Derived : public Base {
        public:
        Derived(int _i): Base(_i) { //зовём super конструктор
        }
    }
    Ответ написан
    Комментировать
  • Какую сортировку применить для слов и чисел?

    sgjurano
    @sgjurano
    Разработчик
    Стоит отдельно отсортировать числа и слова, запомнив позиции слов и чисел во входной последовательности, а затем писать их в выходную в соответствии с этим порядком.

    Сортировать стоит встроенной в язык функцией, а не писать свою, если этого не требуется по условию задачи.
    Ответ написан
    2 комментария
  • Зачем нужен указатель на void?

    @Mercury13
    Программист на «си с крестами» и не только
    void* используется как указатель на сырые байтовые данные, не имеющие конкретного типа.
    Обычно это используется…
    1. В чтении-записи в файлы и на устройства, когда мы можем писать туда абсолютно любые типы.
    2. В «многоликих» функциях, которые могут принимать данные разных типов (malloc/calloc, часть функций WinAPI и ODBC).
    3. Как дескриптор — указатель, который запрещается разыменовывать. В Си для этого также часто используют указатель на недоопределённый тип, в Паскале с другими правилами эквивалентности типов — на пустой record. Но только пока не появится очередная многоликая функция вроде CloseHandle.
    4. Для обеспечения т.н. замыкания — передачи callback’у контекста, откуда была вызвана функция, вызвавшая callback.
    BOOL WINAPI EnumWindows(
      _In_ WNDENUMPROC lpEnumFunc,
      _In_ LPARAM      lParam
    );
    
    BOOL CALLBACK EnumWindowsProc(
      _In_ HWND   hwnd,
      _In_ LPARAM lParam
    );

    Вот этот LPARAM, который обычно определяется как какой-то указатель, и есть замыкание. Функция EnumWindows обещает передать его в функцию lpEnumFunc без изменений.
    (В Си++ для этого также используют виртуальные интерфейсы, но такой метод, сами понимаете, языкозависим и не годится для межъязыкового API.)

    Что происходит на стороне функции? Одно из двух (считаем, функция написана на ЯВУ).
    1. Либо вызывается некая функция устройства, которая говорит: «записать 100 байт», и дальше уже работает железо.
    2. Либо мы преобразуем void* в нужный нам тип и работаем с ним.

    Типы указателям дают по трём причинам.
    1. Вы забыли про операцию «разыменовать указатель». Чтобы его разыменовать, он должен иметь тип!
    2. Чтобы не ошибаться и не переприсвоить несовместимые указатели.
    3. Для полиморфизма — в Си++, давая delete x, мы даже можем не хранить, сколько байтов в блоке, поскольку мы знаем длину типа. (Есть ещё и виртуальные классы, но это другой вопрос.)
    Ответ написан
    Комментировать