Другие языки программирования и технологии

Язык С++. Напишите пожалуйста))

написать функцию, которая находит среднегеометрическое положительных элементов в одномерном массиве и заменяет максимальный элемент на среднегеометрическое
Elvin Pashaev
Elvin Pashaev
316
первое

#include iostream
#include math.h
using namespace std;
int main(){
int n;
cin>>n; //число элементов
double *mass;
mass=new double[n+1]; //на всякий выделим на 1 больше памяти

int max= -INT_MAX;
double maxx=max; //преобразовали для сравнения

for(int i=0;
РГ
Роман Гаврилов
22 008
Лучший ответ
Elvin Pashaev это полностью?)
Не хотим. Всякую фигню писать - не хотим. Не интересно.
DM
Dmitri Molkov
61 736
Elvin Pashaev очень нужно
Нужен стандарт C++17 для optional
Если у тебя Visual Studio, то поддержку 17 стандарта можно включить по пути Проект (верхнее меню) -> Свойства -> Свойства конфигурации -> C/C++ -> Язык -> Стандарт языка C++ -> Стандарт ISO C++17 (/std:c++17)
Если есть вопросы по коду - спрашивай.

#include <iostream>
#include <windows.h>
#include <ctime>
#include <algorithm>
#include <numeric>
#include <optional>
#include <string>

using namespace std;

optional<double> f(int *);

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand(time(NULL));
system("color 0A");

auto len = 10u + rand() % 11u;
auto arr = new int[len];
auto filler = []()
{
return -10 + rand() % 21;
};
generate(arr, arr + len, filler);
cout << "Исходный массив" << endl;
for (auto it = arr; it < arr + len; ++it)
{
cout << *it << endl;
}
auto value_ = f(arr);
cout << (
value_.has_value() ?
"Среднегеометрическое положительных чисел в этом массиве = " + to_string(value_.value()) :
"В массиве нет положительных элементов"
) << endl;

system("pause");
return 0;
}

optional<double> f(int *a)
{
optional<double> outp;
auto len = _msize(a) / sizeof(a);
auto count_positive = 0u;
auto collection = [&count_positive](long long p, int t) -> long long
{
if (t > 0)
{
++count_positive;
return p *= t;
}
else
{
return p;
}
};
long long p = accumulate(a, a + len, 1, collection);
if (count_positive == 0u)
{
outp = {};
}
else
{
outp = pow(p, 1. / count_positive);
}
return outp;
}
Виктор Агибалов Полный отлаженный код https://pastebin.com/9mG540Wq
Помолись, чтобы преподаватели давали мне задания только на C++ и никакого web.
Виктор Агибалов Что в ответе, там я забыл замену максимального элемента сделать.
Здесь доработано и проверено всё https://pastebin.com/9mG540Wq
Виктор Агибалов Вот поинтересней вариант https://pastebin.com/rkbaUvkV
Elvin Pashaev какой-то сложный код))

Похожие вопросы