Ответы пользователя по тегу C++
  • Почему нельзя использовать ^ в коде?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На всякий случай. Домик - это не возведение в степень а булева операция xor.
    Ответ написан
    2 комментария
  • Существует ли способ принять и автоматически подставить знак операции с числами в C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут надо смотреть какие цели этой лабораторной работы. Если цель - учиться С++ - то такое решение как автор написал - вполне себе прокатит. Изучаем switch-case.

    Если цель - парсеры, то решением будет разработка парсера математических выражений (ПОЛИЗ до кучи).

    Если цель - интеграция - то можно просто из С++ вызать любой трансируемый язык (тот-же Perl или Python) и просто в комнадной строке передать ему выражение и получить готовый ответ.

    Если цель - ООП с полиморфизмом - то можно просто развить пункт №2 придав ему красивый вид. Типа Базовый класс - BinaryOp. От него наследники Mul/Sum/Div/Minus.

    Короче все эти решения будут правильными. Они все решают задачу но по разному.

    В разной тык-скыть прадигме.
    Ответ написан
    Комментировать
  • Почему результат операции равен 3?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Все правильно. 3 по модулю 10 это три.
    Ответ написан
    Комментировать
  • Что нужно использовать и как в общем должен выглядеть код для моей программы и возможно ли вообще такое реализовать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Программа будет писаться в приложении "Embarcadero Dev-C++"

    Я думаю что это не имеет значения для вопроса. Хорошее приложение не должно зависеть от сред. И вы это должны понимать и изучать собственно язык и библиотеки. А визуальные среды здесь вообще непричем.

    Реализация работы нескольких процессоров одновременно.

    Я здесь немного выпадаю из тапок. Потому что у меня на 2-м курсе был курсовик - что-то вроде написания эмулятора процессора с ограниченным набором команд. И я помню как это было тяжело. Особенно в отладке. Там еще были другие цели которые я впрочем не помню.

    Поэтому я-бы спросил твой конспект лекций чтобы понять в рамках какого курса это и что это вообще?
    По виду это похоже на планировщик задач а не на процессоры. Я очень прошу автора уточнить реальную задачу. Потому что вот эти все громкие слова, такие как процессор, блокчейн и прочие нейросети - это научпоп в данном форуме. И никто серъезно их решать не будет.
    Ответ написан
    3 комментария
  • В каких книгах хорошо описываются внутренние процессы С++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Какие указатели укладываются в регистры, в каком порядке и тд?

    Я думаю что этот вопрос выходит за рамки чистого С++. По крайней мере компиллятор clang
    может перекладывать эту задачу на backend компиллятор и уже тот в свою очередь решает
    в каком порядке.
    Ответ написан
  • Почему не считывает русскую букву в char?

    mayton2019
    @mayton2019
    Bigdata Engineer
    При работе с языками в консоли обычно возникают следующие вопросы.
    1) Консоль. Какая кодировка по умолчанию для однобайтных символов. Смотри команду.
    chcp для windows или
    $ locale для linux.
    2) Какая кодировка указана для char для текущего компиллятора. Включен ли режим _UNICIDE.
    Посмотри что делают
    setLocale(...);
     setCodepage(...);

    3) Какой размер символа sizeof(char).
    4) В какой кодировке написан исходник. Это можно проверить если посмотреть hex редактором. Там где русская буква может быть например 0xC0 для однобайтной и двух байтной для Unicode.
    5) Установлены ли шрифты? Операционка может быть англо-язычной и в этом случае она не обязата что-то специфичное отображать.
    Ответ написан
    Комментировать
  • Как найти область двумерного массива?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Серая область? Тут наверное 2 цикла надо.

    Либо обходить левый прямоугольник элементов и уже 2 линиями ограничить. Одна линия
    y = x и вторая - перевернутая y = -x и сдвинутая на вниз на SIZE. Тоесть y = -x + SIZE
    Ответ написан
    Комментировать
  • Как возможно сделать этот код короче?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вместо 4 сторон света лучше брать единичный вектор на плоскости (x,y). Тогда формулы удара о борт получаются тривиальные. Просто где то меняется знак с плюса на минус.
    Ответ написан
    Комментировать
  • Как конвертировать строку массива в сам массив?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Никакой это не JSON.

    А по задаче. Может лучше не массив а vector?
    Ответ написан
  • Согласовать окончания C++, как сделать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть такая популярная задача. Называется СУММА ПРОПИСЬЮ. Ее решают тыщу раз и для каждого языка уже написано много кода. Эти типа 1.25 == "Один рубль двадцать пять копеек".

    Поищи исходники - там будет половина решения твоих окончаний.
    Ответ написан
  • Как правильно сортировать файл?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не совсем ясно , чего хотел преподаватель.

    Но для сортировки больших массивов ( которые много крат превышают оперативку ) используется сортировка слиянием - merge sort.
    Ответ написан
    Комментировать
  • Как переделать код под ООП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    ООП предполагает что в задаче есть некая сущность. Объект. И у него должны быть методы. Что происходит в данной задаче? Пользователь вводит x, потом размер массива. Потом сам массив. После этого делаются какие-то манипуляции с массивом. И после этого массив распечатывается на экран. Где тут ООП? Я не знаю! Я чорт возьми не пойму где здесь ООП.

    Вобщем скажи своему преподавателю что здесь нет смысла вводить ООП. Код достаточно хорош и концептуален в том виде как он записан. И надо не забывать про принципы KISS/YAGNI которые никто не отменял.
    Ответ написан
    Комментировать
  • Как в c++ сделать проверку на число и чтоб например если несколько точек в числе или минус в середине была ошибка и возвращало обратно к вводу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Проверить что внутри строки - нечто похожее на число - это одна задача. Ее можно сделать регуляркой. А сделать кастинг его к int/long/float/double - это другая задача.

    Некоторые числа бывают слишком большие и не влезают даже в long (64) и некоторые вещественные могут иметь множитель 10 в степени 310 и это не лезет в double. Мне сложно такое представить но теоретически пользователь может такое ввести.

    Какую задачу решает автор? Что будет дальше происходить с введенным числом?
    Ответ написан
  • Как можно без сторонних библиотек быстро и кроссплатформенно прочитать или записать некоторый кусок байтов с диска или на диск?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Проще всего с этим работать на линуксе. Эта операционка отображает все диски на блочные устройства /dev/* и позволяет с ними работать просто как с очень большими файлами.

    Разумеется права суперпользователя тебе пригодятся. Механизмы безопасности никто не отменял. В Windows тоже есть аналог для таких устройств.
    Ответ написан
    Комментировать
  • Как создать тест для C++ в gradle?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не существует такой задачи как тесты С++ в gradle.

    Но gradle позволяет вызвать shell-команду куда ты можешь вставить вызов g++ компиллятора и потом вызов теста.
    Как здесь пишут https://docs.gradle.org/current/dsl/org.gradle.api...
    Что-то вроде
    commandLine 'g++ demo-Greeter.cpp -o demo-Greeter.exe'
    commandLine './demo-Greeter.exe'

    Это направление. Дальше разбирайся сам.
    Ответ написан
    1 комментарий
  • Максимально производительные GUI-библиотеки для плюсов (Windows)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Возникла проблема - требуется писать программы быстрыми, чем быстрее - тем лучше.


    Ты решаешь какую-то искусственную проблему. Стандартные компоненты пишет целая корпорация и анализируют тыщи тестировщиков. Сомнительно что ты сможешь написать нечто даже близко подходящее по возможностям.

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

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

    Яркий пример - создатели своих DBMS. Тыщи их. Но никто не в состоянии довести разработку даже до альфа-версии. А уж о том чтобы ее показать на презентации - вообще и речи нет.
    Ответ написан
    3 комментария
  • Чем обусловлены различия в работе со строками и другими массивами?

    mayton2019
    @mayton2019
    Bigdata Engineer
    И ещё хотелось бы понять, почему каждый такой указатель является константой?


    Это - тяжелое наследие старых систем. В данном примере ты разбираешся с ASCIIZ-строками. С массивами символов которые завершаются нулем. Такая организация позволяет хранить строки компактно. Маркер const защищает строку от случайного изменения. И правильно делает. От этого больше проблем. Тот формат и тот способ хранения строки вообще не предполагает активных изменений. Особенно с размером. Максимум что можно делать - только читать.

    С точки зрения современного бизнес-программирования ASCIIZ строки устарели. Но поскольку этот формат является единственным транспортом который понимает ядро ОС - то его часто можно встретить в исходниках.

    Для С++ более удобной строкой является std::string. Его использовать приятнее. И с размерами там веселее.
    В легаси исходниках можно встретить причудливые CString (MFC), TString (Borland). Это все разные реализации строк.

    Для Qt есть тоже свой тип строк.
    Ответ написан
    Комментировать
  • Как пропустить аргумент функции при её вызове?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть понятие partially defined функция. Это работает в Haskell, Scala. Результатом такого например
    применения будет просто онлайн компилляция новой функции с меньшим числом аргументов.

    plusInt(_, b)

    Но для С++ тем более в данном контексте использования тебе проще сделать просто еще одну функцию.
    Кстати обращаю твоё внимание на то что функции обычно возвращают занчения. А побочный эффект
    такой как cout - лучше просто вызвать отдельно.

    Мотивация станет более ясна когда будешь такой код тестировать. Всегда проще проверить результат чем анализировать потоки вывода.
    Ответ написан
    Комментировать
  • Допускается ли в коде смешивать парадигмы программирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    - ООП
    - Функциональное
    - Процедурное
    - Структурное

    Это во первых - устаревшие понятия. Все из 20-го века. Сегодня они почти не актуальны.

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

    В современном программировании практикуется конвенция которая принята в команде. Вот придете на проект и вам покажут как пишушт все. И будете так писать. Никто не будет упарываться по поводу трушности ООП или еще чего-то. А в техническом задании от бизнеса вообще ничего не будет на тему стиля кодирования. Там будут описаны просто требования по бизнес-кейсам.
    Ответ написан
    8 комментариев