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

    @Acaunt
    Смотри у тебя вывод переменных происходит в конструкторе. Поэтому в операторе+ ты создаешь объект с параметрами по умолчанию, которые равны нулю, но после создания уже присваиваешь значения в этот объект.

    Ты можешь это лучше увидеть если добавишь одну строку с кодом в оператор+:

    trash operator + (const trash & other)
    	{
    		trash temp;
            temp.x = this->x + other.x;
    		temp.y = this->y + other.y;
                    cout << "x = " << temp.x << "\ty = " << temp.y << endl;
    		return temp;
    	}


    Эту строку ты можешь добавить и к другим операторам чтобы увидеть результат.

    Либо ещё один вариант как это можно сделать:

    trash operator + (const trash & other)
    	{
    		return trash(x + other.x,  y + other.y);
    	}


    Таким образом ты сразу в конструктор помещаешь необходимые значения.
    Ответ написан
    Комментировать
  • Как передать в аргумент функцию, и выполнить её, передаваю в неё параметры?

    @Acaunt
    Вот два простых примера как это можно сделать:
    #include <iostream>
    #include <functional>
    
    void f(const std::string& str) {
        std::cout << str;
    }
    
    void foo(void (*f)(const std::string&), const std::string& str) {
        f(str);
    }
    
    void Foo(std::function<void(const std::string&)> F, const std::string& str) {
        F(str);
    }
    
    
    int main() {
        foo(f, "Hello");
        Foo(f, " world");
        return 0;
    }


    foo пример без использования STL
    Foo пример с использованием STL

    Но возможно, если ты планируешь передавать функции с разными аргументами и их количествами, то можно попробовать сделать через какой-нибудь std::initializer_list, но таким образом и все функции тоже нужно переделать чтобы они принимали этот тип.
    Ответ написан
  • В чем ошибка блок-схемы?

    @Acaunt
    Ну снова привет. Уже отвечал на другой твой вопрос с другой блок схемой. Ты сам то можешь самостоятельно проанализировать свою блок схему?

    Ну ладно про эту блок схему:
    1) у тебя не все операции прописаны в блок схеме, и не все понятны что конкретно делает определённый блок например вывод в консоль.
    2) в цикле не правильно указаны пути от логического сравнения
    654330fa5ad27364227815.png

    Ну вроде это всё.
    Ответ написан
    Комментировать
  • В чем ошибка блок-схемы?

    @Acaunt
    Я последний раз трогал блок схемы в начальных классах поэтому возможно не совсем правильно нарисовал. Но основную мысль думаю можно увидеть.
    653189808fb8a794620742.png
    Первое что я заметил это перепутаны логические выходы проверки на количество оценок.
    Второе отсутствует операция сложения оценок.
    Третье как по мне не очень понятен был показан у тебя пути работы цикла, не было стрелки того куда идти для повторения цикла и логический выход из цикла.
    Возможно ещё что-то, но я не совсем хорошо помню эти блок схемы.
    Ответ написан
    Комментировать
  • Ошибка: for требуется объявление. Как исправить?

    @Acaunt
    Для начала просто убери цикл в классе. Циклы не вставляют прямо в класс, а вставляют в методы.
    Ответ написан
    3 комментария
  • Как построчно записать файл в каждый элемент массива LittleFS?

    @Acaunt
    С Ардуино не знаком, но вот как это можно сделать в стиле C++:
    Функция чтения
    #include <fstream>
    #include <vector>
    
    bool read_file(std::string name_file, std::vector<std::string> &arr) {
        // Открываю текстовый файл для чтения
        std::ifstream read;
        read.open(name_file);
        
        // Проверяю открылся ли текстовый файл.
        // Если не открылся, то выхожу из функции с возвратом значения ЛОЖЬ
        if (!read.is_open()) {
            read.close();
            return false;
        }
        
        // Читаю текстовый файл до конца
        while (!read.eof()) {
            // Получаю текстовое значение одной строки в текстовом файле
            std::string str;
            getline(read, str);
            
            // Добавляю полученое текстовое значение в конец вектора
            arr.push_back(str);
        }
    
        read.close();
        
        // Выход из функции с возвратом значения ИСТИНА
        return true;
    }
    Пример использования
    #include <iostream>
    #include <vector>
    
    int main() {
        // Вектор в который будем записывать значения тектового файла
        std::vector<std::string> arr;
        
        // Проверяем получилось ли прочесть текстовый файл
        // Если не получилось выполняем какой-нибудь код
        if (!read_file("C:\\Text.txt", arr)) {
            std::cout << "Fail read file" << std::endl;
        }
        
        return 0;
    }
    P.S. Если возникнут вопросы пиши
    Ответ написан
    2 комментария