C/C++

Задан одномерный массив целых чисел создать код на C++

Задан одномерный массив целых чисел, вычислить сумму тех элементов, которые больше (min+max)/2
запрещено использовать
print
scan
и прочее, что в духе чистого си
нужен только с++
План действий:
1. формируем массив
2. находим мин
3. находим макс
4. вычисляем
5. перебираем массив на предмет соответствия
6. выводим результат
Серёжка Модебадзе
Серёжка Модебадзе
4 478
Лучший ответ
Александр Лаубган #include
using namespace std;
int main()
{
setlocale(0, "rus");
int n;
cout << "Размер массива: ";
cin >> n;
if (n < 1) return 1;
int* a = new int[n];
cout << "Введите элементы массива:" << endl;
for (int i = 0; i < n; ++i) cin >> a[i];
int minimal = a[0], maximal = minimal;
for (int i = 1; i < n; ++i)
{
if (a[i] > maximal) maximal = a[i];
if (a[i] < minimal) minimal = a[i];
}
long sum = 0ll;
for (int i = 0; i < n; ++i)
{
sum += a[i] > (maximal + minimal) / 2. ? a[i] : 0;
}
cout << "Сумма требуемых элементов: " << sum << endl;

return 0;
}
Александр Лаубган сможете объяснить мне каждую строку?
а то я мало что из этого понимаю
#include <algorithm>
#include <iostream>
#include <array>
#include <iterator>
#include <random>
#include <numeric>
using namespace std;
int main() {
uniform_int_distribution<> uid(1, 9);
mt19937 gen{ random_device()() };
const auto rand = [&](int& x) {x = uid(gen); };
array<int, 15U> box{};
for_each(box.begin(), box.end(), rand);
copy(box.begin(), box.end(), ostream_iterator<int>(cout, " "));
puts("");
const auto [pmin, pmax] = minmax_element(box.begin(), box.end());
const auto avg = (*pmin + *pmax) / 2.0;
cout << "Average: " << avg << '\n';
const auto cmp = [avg](int acc, int val) { return acc += val > avg? val : 0; };
const auto sum = accumulate(box.begin(), box.end(), 0, cmp);
cout << "Sum: " << sum << '\n';
system("pause > nul");
}
Роман Хомутник
Роман Хомутник
91 887
С помощью stdio.h и ifstream,ofstream твоя программа будет летать!!!! Только не забудь создать input.txt и output.txt файлы.
#include stdio.h
#include vector
#include fstream
using namespace std;
int main()
{
ifstream cin("input.txt");
ofstream cout("output.txt");

int size, sum = 0;
cin >> size;
vector v(size);
for (int i = 0; i < size; i++)
cin >> v[i];
int min = v[0];
int max = v[0];
for (int i = 0; i < size; i++)
{
if (min > v[i])
{
min = v[i];
}
if (max < v[i])
{
max = v[i];
}
}
for (int i = 0; i < size; i++)
{
if (v[i] > (min + max) / 2)
{
sum = sum + v[i];
}
}

cout << sum;
return 0;
}
Жанболат *_*жамбо*_*....) #include
#include
#include
using namespace std;
ifstream cin("input.txt");
ofstream cout("output.txt");

void foo()
{
int size, sum = 0;
cin >> size;
vector v(size);
for (int i = 0; i < size; i++)
cin >> v[i];
int min = v[0];
int max = v[0];
for (int i = 0; i < size; i++)
{
if (min > v[i])
{
min = v[i];
}
if (max < v[i])
{
max = v[i];
}
}
for (int i = 0; i < size; i++)
{
if (v[i] > (min + max) / 2)
{
sum = sum + v[i];
}
}

cout << sum;
}
int main()
{
foo();
return 0;
}
чтобы это не мешалось в главной функции main, можно создать функцию
Жанболат *_*жамбо*_*....) ладно, ладно, держи!
План действий:
1. формируем массив
2. находим мин
3. находим макс
4. вычисляем
5. перебираем массив на предмет соответствия
6. выводим результат
Александр Панков должно работать
Александр Лаубган ну тут я сразу выдвину несколько вопросов
1 где ввод и где вывод (я их не вижу
2 тут как я понял массив до 10 а у меня задача стоит на массив который я сам укажу
3) ну это уже скорее просьба
это объяснить каждую строку
ну и по братски скинь сам код, а то скрин долго переписывать)

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