Задать вопрос
Ответы пользователя по тегу C++
  • Как собрать введенные данные и отправить данные в БД - QT?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Комментировать
  • Какую книгу выбрать по C++ (из предложенных)?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
  • Операционная система для умного дома на C++ c полного нуля. Как?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    spoiler
    Вы что фейки регаете или какое-то весеннее обострение? Такой же вопрос был N дней назад

    Тут пришла ванга и сказала, что у вас ничего не получится. А по сабжу, бросьте эту глупую идею. Чем вас не устраивает зоопарк готовых решений на базе linux и unix? Сделайте очередной дистрибутив линукса, только напичканный софтом для взаимодействия с микроконтроллерами, датчиками, камерами и всем умным в вашем доме. Т.е. ядро умного дома, а потом уже расширяйте его модульно. Можете сделать распределённую отказоустойчивую систему, в общем простор для фантазии большой и вовсе не нужно писать свою ОС.
    Ответ написан
    1 комментарий
  • Как работает генератор случайных чисел?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    rand(), емнип, это линейный конгруэнтный метод, плохой, небезопасный для криптографии, но зато быстрый. А так, без внешнего источника "случайности", компьютер не может генерировать случайные для нас числа, т.к. компьютер действует по строго определённой логике, поэтому люди придумывают сложные алгоритмы псевдослучайных чисел, которые выдают последовательность, похожую на случайную, если же нужны действительно случайные числа, то нужно брать их из физических процессов, которые мы предсказать не в силах. Для примера, когда мы бросаем кубик, мы предполагаем, что выпавшее число случайное, но на самом деле это не так, если знать начальное положение кубика, учесть все силы, действующие на него до падения(трением о воздух в принципе можно пренебречь) и поверхность, на которую он упадёт, то можно предсказать, какое там будет число ещё до того, как он упал, но мы этого не знаем и предсказать не можем, поэтому считаем его случайным. В компьютере в качестве такого кубика может служить аппаратный генератор(https://ru.wikipedia.org/wiki/RdRand), шум с звуковой карты, сигнал с вебкамеры, движение мыши, какие-то другие действия пользователя, которые для компьютера являются случайными, а лучше несколько таких источников, смешанных по особым алгоритмам. Для примера можете написать в командной строке линукса cat /dev/random он начнёт выдавать какие-то непонятные символы и рано или поздно они закончатся, если подвигать мышью, на экране может появиться ещё несколько символов.
    Ответ написан
    Комментировать
  • Можете объяснить код?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Когда ж вы научитесь документацию читать? Тут всё очень подробно расписано: en.cppreference.com/w/cpp/algorithm/sort а про итераторы можете почитать либо в другом разделе документации, либо в какой-нибудь хорошей книге(Прата например)
    Ответ написан
    2 комментария
  • Как и в чем лучше написать программу для Desktop?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Ваш выбор великолепен, тему можно закрывать
    Ответ написан
    Комментировать
  • Создание вектор массивов C++? И как добавлять туда данные?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Эмм, ну сделай массив(вектор) структур, что сложного то?
    struct Point
    {
    double x, y;
    }
    std::vector<Point> points;
    Ответ написан
    1 комментарий
  • Как определить длину числа с нуля?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    std::string str;
    std::getline(std::cin, str);
    std::cout << str.size() << std::endl;
    Ответ написан
    Комментировать
  • Как создать OS с помощью C++ и Python?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Если ты не троллишь, то начни с изучения ассемблера, архитектуры ПК(Таненбаума например прочитай), затем изучай, как устроены операционные системы(опять же Таненбаум). Я почти уверен, что после этого тебе расхочется делать ОС, но опыт будет полезный и скилл C++ или любого другого языка поднимется.
    Ответ написан
    3 комментария
  • Как разыменовать элементы массива?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    К элементу массива на который указывает указатель можно обращаться с синтаксисом [], как к массиву, т.е.
    int *array = new int[10];
    array[1] = 10;
    delete[] array;

    или же с синтаксисом разыменовывания указателей, т.е.
    int *array = new int[10];
    *(array + 1) = 10;
    delete[] array;

    вероятно от вас требуется второй вариант. А вообще, читайте лучше книжки, чем по каждому пустяку идти на тостер.
    Ответ написан
    Комментировать
  • Как заполнить массив рандомными числами от -10 до 10?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    ru.cppreference.com/w/cpp/algorithm/generate
    std::generate(array, array + size, []() { return rand()%20 - 10; });
    Ответ написан
    1 комментарий
  • Упражнение из Страуструпа. Преобразование числового представления цифры в строковое и наоборот?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Для начала не ходить по чужой памяти, если пользователь введёт 15, то вероятнее всего будет сегфолт, но не факт.
    Первое:
    #include <iostream>
    #include <vector>
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    int main()
    {
        std::vector<std::string> numbers = {
            "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"
        };
        int value;
        while (cin >> value) {
            if (value >= 0 && value < numbers.size())
                cout << numbers.at(value) << endl;
        }
    
        return 0;
    }

    второе:
    #include <algorithm>
    #include <iostream>
    #include <vector>
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    int main()
    {
        std::vector<std::string> numbers = {
            "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"
        };
        std::string value;
        while (cin >> value) {
            auto it = std::find(numbers.begin(), numbers.end(), value);
            if (it != numbers.end())
                cout << std::distance(numbers.begin(), it) << endl;
        }
    
        return 0;
    }
    Ответ написан
    Комментировать
  • Байт вмещает 256 символов?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    то есть благодаря инструкции и двоичной системе 0,1,2,3,4...255 считается числом команд

    Вот тут не понял, при чём тут команды? Если вы про машинные команды, то они могут быть больше одного байта.
    Я правильно понимаю что в чистый байт(без инструкций) можно впихнуть скажем 256 чисел? (типо 111111111111111...)

    Опять же, при чём тут инструкции? А про байт, вы уточните о каком байте речь, если про C#, то там тип данных byte имеет размер 8 бит, следовательно может хранить одно из 256 различных значений от 0 до 255. Если про байт, как про минимально адресуемую ячейку памяти, то в большинстве современных компьютерных систем 8 бит, но были раньше(может и сейчас есть) и не 8 https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B9%D1%82
    Ответ написан
    Комментировать
  • Как возвращать(return) массив из функцию с переменным количеством параметров?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Вы гуляете по памяти в надежде, что параметры передаются через стек, но на деле это может быть не так и довольно часто компилятор передаёт их через регистры. Для этого есть специальные средства, гугли va_list
    Ответ написан
    Комментировать
  • Как можно разделить строку на массив токенов средствами stl?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Можно использовать boost
    #include<iostream>
    #include<boost/tokenizer.hpp>
    #include<string>
    
    int main()
    {
       std::string s = "hello, boost!";
       boost::char_separator<char> sep(", !");
       boost::tokenizer<boost::char_separator<char>> tok(s, sep);
       for(auto it = tok.begin(); it != tok.end(); it++) {
           std::cout << *it << std::endl;
       }
    }

    Это не stl, но решение хорошее
    Ответ написан
    6 комментариев
  • Какие использовать функции в С для чтения строк?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Ответ написан
    Комментировать
  • Как получить температуру процессора на ноутбуке посредством win API?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Могу предложить поискать опенсорсные аналоги аиды и изучать код
    Ответ написан
    Комментировать
  • Есть ли такое сообщество, в котором программисты тренеруются собеседоваться, а интервьюеры собеседовать?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    А какие именно проблемы возникают? Попробуй записать их и поискать подходящий ответ для подобной ситуации, допустим если не знаешь как решить какую-то задачу, то можно сказать, что сейчас ты ответить не можешь, но если такая задача возникнет в процессе работы, ты погуглишь, изучишь проблему и найдёшь решение. Но я диванный эксперт и на собеседованиях не был, не слушай меня.
    Ответ написан
    Комментировать
  • Что изучить C или C++?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Да впрочем не особо то и важно, всё равно на отличном уровне не выучишь, да и не надо оно, помимо языка знать придётся ещё очень много вещей, по си можешь почитать "Керниган,Ритчи - Программирование на C", книжка небольшая в принципе, по C++ "Прата С. - Язык программирования С++. Лекции и упражнения", эта побольше, но действительно годная и рассказывается C++11, который делает C++ мощнее и удобнее.
    Ответ написан
    1 комментарий
  • C++ как достать часть из строки?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    В прошлом вопросе ты спрашивал про частный случай для 2 слов, а в эмуляторе терминала их может быть больше, допустим cat file1 file2 > file3. Если делать просто, то используй std::stringstream, инициализируешь его строкой и по слову сохраняешь в list или vector.
    #include <iostream>
    #include <sstream>
    #include <list>
    using std::cout;
    using std::endl;
    
    int main() {
    	std::string str = "cat file1 > file2";
    	std::stringstream ss(str);
    	
    	std::list<std::string> tokens;
    	std::string tmpString;
    	while(ss >> tmpString)
    		tokens.push_back(tmpString);
    		
    	for(auto token : tokens)
    		cout << token << endl;
    	return 0;
    }

    И прошу как можно проще я новичок и код который мне кинули в прошлом вопросе я даже не понял а я не могу использовать код который не понимаю не по моему это

    это правильно, в программировании нет места магии :)
    spoiler
    ну если только совсем чуть-чуть

    P.S. на в таком случае будет сложно обрабатывать подобный случай rm -rf "/home/user/some dir" когда в одном из аргументов есть пробел
    Ответ написан
    Комментировать