Задать вопрос
  • Что качать: Visual Studio 2015 express или Visual Studio 2017 community?

    maaGames
    @maaGames
    Погроммирую программы
    community полноценная версия для одного разработчика. Нет только некоторых функций, полезных при корпоративной разработке. Но придётся зарегистрироваться (бесплатно). Ну и нельзя для коммерческой разработки использовать.)
    Ответ написан
    6 комментариев
  • Что качать: Visual Studio 2015 express или Visual Studio 2017 community?

    pavel9609
    @pavel9609
    Студент-программист
    У Visual Studio 2015 нет express версии, есть комьюнити.
    Комьюнити - это есть урезанная, бесплатная версия.
    Ну вроде даже у бесплатной функционал нормальный. Качайте 2017, если вы сидите на 10 винде.
    Ответ написан
    2 комментария
  • Есть ли аналог help() из Python3 в C++?

    Profi_GMan
    @Profi_GMan
    К сожалению нет, но и зачем? Там всё равно всё не опишешь... Подобное можно найти на сайтах, например ru.cppreference.com/w или en.cppreference.com (он часто корректнее)
    Ответ написан
    3 комментария
  • Актуальность swift?

    @iMaximus
    На вашем месте я изучал бы swift, да полно еще библиотек которые на obj c но их подключил и забыл, дальше все равно пишешь на swift. Есть еще работодатели которые до сих пор поддерживают проекты на obj c и их не мало, да и в целом знание obj c помогает. Но если ставить вопрос так, как его ставите вы, то однозначно swift. Работодатели смотрят отлично, на рынке нехватка swift программистов, многие уже пишут только на нем, например Тинькофф.
    Ответ написан
    1 комментарий
  • Как в си найти котангенс?

    @Mercury13
    Программист на «си с крестами» и не только
    Единственно правильный способ — tg(π/2 − x).
    Дело в том, что 1/tg будет глючить в районе 90°.
    Ответ написан
    4 комментария
  • Как в си найти котангенс?

    0xD34F
    @0xD34F
    Я слышал, что котангенс - это единица, делённая на тангенс. Или косинус, делённый на синус. И ещё будто бы есть формула приведения, выражающая котангенс через тангенс разности π/2 и исходного угла.

    Ну а функции вычисления косинусов, синусов и тангенсов в стандартной библиотеке есть.
    Ответ написан
    Комментировать
  • Как проранжировать числовой массив?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    std::vector indices(data.size());
    for (size_t i = 0; i < data.size(); ++i)
    {
        indices[i] = i;
    }
    
    std::sort(indices.begin(), indices.end(), [&data](int a, int b) {
            return data[a] < data[b];   
        });
    Ответ написан
    7 комментариев
  • Почему меняется выходное значение после нескольких запусков программы?

    @Mercury13
    Программист на «си с крестами» и не только
    Компилятор какой используете? У меня на MinGW всё постоянно — и постоянно не дробная часть. Есть две возможные причины нестабильного поведения.
    1. Флаги сопроцессора — какая-то библиотека Си их не выставляет в постоянное значение.
    2. Неопределённое поведение (uint32_t)var в предпоследней строке. Число-то >1016, а uint32 — это 4·109.

    Тут вы множите число на 10, пока оно не станет целым. Если оно не точный double (а оно не точный), получается ситуёвина, когда младшие биты зависят от флагов сопроцессора, и неизвестно, сколько итераций проработает программа. В любом случае крайне мала вероятность, что будет нечто умещающееся в uint32_t. Таким образом, есть такие варианты обойти проблему.
    1) Умножить сразу на 1e8, а затем обрезать нули.
    2) Сконвертировать в uint64_t.

    Преобразование в uint64_t даёт постоянные 28800000000000024.
    Умножение на 1e8 (число подобрано такое, чтобы в uint32_t вмещалось)
    var *= 1e8;
        number = (uint64_t)var;
    
        while (number % 10 == 0)
            number /= 10;

    даёт 288.

    UPD. Сам я для преобразования дробного в строку в коммерческой проге использую собственную функцию, основанную на GRISU. Там есть много функций наподобие: точность 7 знаков, но если число <1010 — выводим его как целое, с 9-ю знаками.
    Ответ написан
    Комментировать
  • Как реализовать сумму дробей?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А что там придумывать? Сложение - первый класс начальной школы, операции с дробями - пятый класс.
    Просто последовательно складывайте дроби в натуральном представлении.
    Ответ написан
    4 комментария
  • Как описать условие в более приемлемом виде в c++?

    0xD34F
    @0xD34F
    Перед циклом так:

    string s = "01234567890,#";

    Проверять так:

    if (s.find(a[i]) != string::npos) {
    Ответ написан
    9 комментариев
  • Как поместить значение переменной в массив?

    @Alexander1705
    string total_1[] = {};
    Это пустой массив, и так как его размер нельзя изменить, соответственно и значение вы в него не можете поместить.

    string total_1[10];
    total_1[4] = "Hello, world!";

    Так вы создаёте массив из 10 элементов, и в четвёртый (на самом деле пятый) помещаете значение.

    #include <vector>
    ...
    vector<string> total_1;
    total_1.push_back("Hello, world!");

    Так можно создать vector (массив с изменяемым размером), и добавить в конец новое значение.
    Ответ написан
    2 комментария
  • Как поместить значение переменной в массив?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Используй std::vector
    Ответ написан
    1 комментарий
  • Что почитать на cpp после ооп?

    GavriKos
    @GavriKos
    Советую начать писать код.
    Ответ написан
    Комментировать
  • C++, что означает это код?

    @Wexter
    это не с++, это псевдокод.
    if (node <> NULL) == if (node != null)

    по второму - это определение функции в псевдокоде, integer - тип возвращаемого реультата функции. вместо return используется присвоение значения имени функции. на с++ будет что-то вроде этого
    int DeviceUnitsToPoints(int deviceUnits) {
    return deviceUnits * ( POINTS_PER_INCH / DeviceUnitsPerInch() );
    }
    Ответ написан
    Комментировать
  • Что изучать в первую очередь? С(СИ) или С++?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    если возьмусь за С(СИ) я смогу перепрыгнуть же на С++?

    Да.
    А смогу, допустим, уже наоборот?

    Да.
    А какая цель изучения? Просто чтоб изучить что-то? Тогда абсолютно не важно.
    Ответ написан
  • Как работает эта программа, определяющая порядок байтов в компьютере?

    15432
    @15432
    Системный программист ^_^
    Создаётся переменная типа unsigned short int, которая почти во всех современных компиляторах имеет размер 2 байта. Затем ей присваивается значение 1. В случае архитектуры Little Endian, единица запишется в младший байт переменной, а в случае Big Endian - в старший байт. Дальше именно это и проверяется - конструкция *((unsigned char *) &x) получает значение младшего байта переменной. Если там оказался ноль, значит архитектура Big Endian.

    Код, делающий то же самое, но проверяющий старший байт:
    #include <stdio.h>
    unsigned short x = 1; /* 0x0001 */
    int main(void)
    {
      printf("%s\n", *((unsigned char *) &x + 1) == 0 ? "little-endian" : "big-endian");
      return 0;
    }
    Ответ написан
    Комментировать
  • В чем ошибка ?Хотел использовать метод?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    В iOS 10 preferredStatusBarStyle это пропертя, а не метод. Надо писать так
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }


    via
    Ответ написан
    Комментировать
  • Try-catch-throw. Как понять эту схему?

    @nirvimel
    Вы называете одним словом "ошибка" несколько совершенно различных вещей, не связанных между собой:
    1. Синтаксическая ошибка в исходном коде. "где в тип string вводится int и сообщается об ошибке" - это невозможно в принципе, так как ваш исходный код, в котором нарушено соответствие типов, не является валидной программой (все равно что оставить незакрытую скобку), компилятор не сможет скомпилировать из него никакой бинарный исполнимый файл просто потому, что видит бессмыслицу в таком исходнике.
    2. Исключительная ситуация (exception) во время выполнения. Она всегда предусмотрена кодером (этим она и отличается). Например я пишу функцию, которая должна делить одно число на другое, я предполагаю, что кто-то (типа меня же) может использовать эту функцию неправильно и передать ноль в качестве делителя. Я хочу, чтобы такому пользователю прилетел (по голове) exception, красноречиво сообщающий о том, что так делать не стоит. Для этого я пишу
      if (denominator == 0) { throw std::invalid_argument( "НЕ НАДО ТАК!" ); }
      . Теперь, если мне нужно выполнить какой-то кусок кода, в котором есть вызовы функций, из которых могут вылетать исключения, и я хочу как-то локализовать эту проблему и обезопасить от этого остальную программу, то я пишу
      try { divide(x, 0); } catch (const std::invalid_argument& e) { /* Я все понял, я так больше не буду. */ }
      .
    3. Undefined behavior - это результат не предусмотренной никем ситуации во время выполнения. Например, я заб(ы/и)л на то, что кто-то может передать ноль в мою функцию в качестве делителя и пишу int divide(int a, int b) { return a / b; }. И однажды это происходит, кто-то (да я же сам) передает туда ноль и... Что должно произойти в этой ситуации? Я не знаю, CPU не знает, компилятор об этом не позаботился, ОС тоже не знает, но на всякий случай она прихлопнет весь процесс целиком и (возможно) напишет в консоль что-то типа segmentation fault.
      А что, если я буду вызывать такую подозрительную функцию из блока try-catch? - Да ничего это не меняет. try-catch ловит только преднамеренно брошенные исключения в ситуации, когда возможность возникновения ошибки была предусмотрена кодером. try-catch ничем не может помочь против undefined behavior потому, что предусматривать возможные ошибки во время выполнения - это задача кодера, а не компилятора, который занимается только контролем соответствия типов и формальной корректности программы.


    Если вам не по душе концепция undefined behavior, то переходите на Java или .NET, там компиляторы сами добавляют все необходимые (и обходимые) проверки ценой снижения быстродействия вашей программы.
    Ответ написан
    3 комментария