
Дан целочисленный массив размера N. Увеличить все минимальные элементы, содержащиеся в массиве, на
исходное значение последнего нечетного числа. Если нечетные числа в массиве отсутствуют, то оставить массив без изменений.(Написать на языке С++)

Ответы на вопрос

#include <iostream>
#include <time.h>
#include <algorithm>
using namespace std;
int* input_array_auto(int* arr, int n) {
for (size_t i = 0; i < n; i++)
{
arr[i] = rand() % 10 + 1;
}
return arr;
}
int* input_array(int* arr, int n) {
for (size_t i = 0; i < n; i++)
{
cin >> arr[i];
}
return arr;
}
void print_array(int* arr, int n) {
for (size_t i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
bool check_odd(int elem) {
return elem % 2 == 1 ? true : false;
}
int find_last_odd (int* arr, int n) {
int last_odd = 0;
for (size_t i = 0; i < n; i++)
{
if (check_odd(arr[i])) {
last_odd = arr[i];
}
}
return last_odd;
}
int* overwriting_minima_array(int* arr, int n, int min, int last_odd) {
for (size_t i = 0; i < n; i++)
{
if (arr[i] == min) {
arr[i] = arr[i] + last_odd;
}
}
return arr;
}
int main()
{
setlocale(LC_ALL, "Russian");
srand(time(NULL));
int n;
cout << "Введите N: ";
cin >> n;
int* arr = new int[n];
arr = input_array_auto(arr, n);
print_array(arr, n);
int *min = min_element(arr, arr + n);
int last_odd = find_last_odd(arr, n);
arr = overwriting_minima_array(arr, n, *min, last_odd);
print_array(arr, n);
}



Вот пример реализации данной задачи на языке C++:
cpp#include <iostream>
#include <vector>
#include <algorithm>
void increaseMinElements(std::vector<int>& arr) {
// Находим последнее нечетное число в массиве
int lastOdd = 0;
for (int i = arr.size() - 1; i >= 0; --i) {
if (arr[i] % 2 != 0) {
lastOdd = arr[i];
break;
}
}
// Если нечетные числа отсутствуют, выходим
if (lastOdd == 0) {
return;
}
// Находим минимальный элемент в массиве
int minElement = *std::min_element(arr.begin(), arr.end());
// Увеличиваем все минимальные элементы на значение последнего нечетного числа
for (int i = 0; i < arr.size(); ++i) {
if (arr[i] == minElement) {
arr[i] += lastOdd;
}
}
}
int main() {
int N;
std::cout << "Введите размер массива: ";
std::cin >> N;
std::vector<int> arr(N);
std::cout << "Введите элементы массива: ";
for (int i = 0; i < N; ++i) {
std::cin >> arr[i];
}
increaseMinElements(arr);
std::cout << "Массив после увеличения минимальных элементов: ";
for (int i = 0; i < N; ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
Эта программа сначала запрашивает размер массива N
и затем просит ввести элементы массива. Затем она вызывает функцию increaseMinElements
, которая увеличивает все минимальные элементы в массиве на значение последнего нечетного числа. Результат выводится на экран.
Пожалуйста, обратите внимание, что в данном примере не выполняется проверка корректности ввода пользователем, поэтому стоит убедиться, что введенные данные соответствуют условиям задачи.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili