C/C++

Помощь с Массивами C++

Сформировать статический массив из n элементов с помощью датчика
случайных чисел (n задается пользователем с клавиатуры).
2.2 Распечатать полученный массив.
2.3 Выполнить удаление минимального элемента из массива.
2.4 Добавить Элемент с номером К в конец массива.
2.6 Вывести полученный результат.
2.7 Поменять местами минимальный и максимальный элементы.
2.8 Вывести полученный результат.
2.9 найти Элемент равный среднему арифметическому элементов массива (округлить).
2.10 Вывести полученный результат.




При решении задач объявлять статический массив на 100 элементов, но формировать массив из n элементов, n<100.
4.2 Ввод значений n, K, M, P, R осуществлять с клавиатуры.
4.3 Вывод результатов должен выполняться после выполнения каждого
задания. Элементы массива выводить в строчку, разделяя их между собой
табуляцией.
4.4 При выполнении добавления элементов в массив формировать их значения
случайным образом, если в задании не сказано другое.
#include <iostream>
using namespace std;

void arr_fill(int* arr, size_t size) //заполнение массива
{
srand(time(NULL));
for (size_t i = 0; i < size; i++) arr[i] = rand() % 101 - 50;
}

void arr_print(int* arr, size_t size) //печать элементов
{
for (size_t i = 0; i < size; i++) cout << arr[i] << "\t";
cout << endl;
}

void arr_del_2(int* arr, size_t& size, size_t index) //удаление элемента
{
if (index >= size)
{
cout << "такого элемента нет в массиве!\n"; return;
}
for (size_t i = index; i < size - 1; i++)
arr[i] = arr[i + 1];
size--;
}

void arr_add(int* arr, size_t& size, size_t k) //добавление элемента
{
if (size >= 100 || k >= size) { cout << "невозможно добавить новый элемент!\n"; return; }
arr[size] = arr[k];
size++;
}

size_t find_min_max(int* arr, size_t size, bool min = false)
{
size_t pos = 0;
for (size_t i = 1; i < size; i++) if (min ? arr[pos]<arr[i] : arr[pos]>arr[i]) pos = i;
return pos;
}

size_t arr_find(int* arr, size_t size) //находит индекс элемента равного среднему арифм или -1 если не найден
{
int summ = 0;
for (size_t i = 0; i < size; i++) summ += arr[i];
summ = summ / size;
for (size_t i = 0; i < size; i++) if (arr[i] == summ) return i;
return -1;
}

int main()
{
setlocale(0, "");
int arr[100]{}; //статический массив на 100 элементов 2.1
size_t n;
size_t k;
cout << "введите размер массива (не более 100):\n";
cin >> n;
if (n > 100)
{
cout << "Размер превышает допустимый!"; return 1;
}
arr_fill(arr, n);
arr_print(arr, n); //2.2
arr_del_2(arr, n, find_min_max(arr, n, false)); //2.3
arr_print(arr, n);
cout << "Введите номер элемента, который следует добавить\n";
cin >> k;
arr_add(arr, n, k); //2.4
arr_print(arr, n); //2.6
swap(arr[find_min_max(arr, n, true)], arr[find_min_max(arr, n)]); //2.7
arr_print(arr, n); //2.8
cout << "Элемент равный среднему арифметическому:\n";
if (arr_find(arr, n) != -1) cout << arr[arr_find(arr, n)];
else cout << " не найден!"; //2.9 / 2.10
}
Роман Билалов
Роман Билалов
51 416
Лучший ответ
Сергей Шестаков при среднем арифметическом всегда пишет - "не найден"
Роман Билалов Пример при n=3 : 1 1 7 среднее арифм = 3, какой из элементов возвращать?
Роман Билалов введите размер массива (не более 100):
15
-24 -9 1 20 33 -36 48 36 37 12 7 -18 -49 45 -27
-24 -9 1 20 33 -36 48 36 37 12 7 -18 45 -27
Введите номер элемента, который следует добавить 1
-24 -9 1 20 33 -36 48 36 37 12 7 -18 45 -27 -9
-24 -9 1 20 33 48 -36 36 37 12 7 -18 45 -27 -9
Элемент равный среднему арифметическому:
7