функция которая вычисляет значение в векторе

Рейтинг: -2Ответов: 1Опубликовано: 18.06.2023

Задание:

Напишите функции для вычисления модуля числа. Разработайте четыре функции, которые будут оперировать со следующими типами данных: int, float, double, vector

Предыдущие типы данных уже обработаны. Проблемы возникли с созданием последнего. Нужно написать функцию, которая будет вычислять значение в векторе. Есть возможность воспользоваться методом push_back, но я не понимаю для чего. При реализации функции для вектора можно использовать версию ComputeAbs, работающую с int, но с этим у меня также возникли сложности.

Файл main.cpp: (В нем ничего менять не нужно)

cout << "|100| = "s << ComputeAbs(100) << endl;
cout << "|0| = "s << ComputeAbs(0) << endl;
cout << "|-50| = "s << ComputeAbs(-50) << endl;

// Тестируем версию float. Можно задать значение float
// добавив после цифр букву f
cout << "|3.141592f| = "s << ComputeAbs(3.141592f) << endl;
cout << "|0.f| = "s << ComputeAbs(0.f) << endl;
cout << "|-3.141592f| = "s << ComputeAbs(-3.141592f) << endl;

// Тестируем версию double
cout << "|3.141592| = "s << ComputeAbs(3.141592) << endl;
cout << "|0| = "s << ComputeAbs(0) << endl;
cout << "|-3.141592| = "s << ComputeAbs(-3.141592) << endl;

// Тестируем версию vector
int idx = 0;
vector input_data = {10, 20, -30, -50, 100};
for (int x : ComputeAbs(input_data)) {
    // Операция ++ увеличивает значение целочисленной переменной на 1.
    // Результатом операции ++ становится значение до увеличения.
    cout << "|"s << input_data[idx++] << "| = "s << x << endl;
}

Файл functions.cpp:

int ComputeAbs(int v){
    if(v>=0){
        return v;
    }
    else{
        return - v;
    }
}
float ComputeAbs(float v){
     if(v>=0){
        return v;
    }
    else{
        return - v;
    }
}
double ComputeAbs(double v){
      if(v>=0){
        return v;
    }
    else{
        return - v;
    }
}
vector<int> ComputeAbs(vector<int> v){
    for(int k : vector<int> v)){
        if(k>=0){
            return k;
        }
        else{
            return -v;
        }
    }
    
}

Ответы

▲ 0

Если применение функции к вектору должно дать вектор с абсолютными значениями всех элементов, то внутри нужно создать пустой вектор, потом заполнить нужным образом, и вернуть этот самый вектор (онлайн тест)

vector<int> ComputeAbs(vector<int> v){
    vector<int> res;
    for(int k : v)
        res.push_back(k>=0? k: -k);
    return res;
}