Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3016594
А
Аноним
26 марта 2025 10:49 · публичный вопрос
А
Аноним

2 вариант 1. Дан целочисленный массив, состоящий из n элементов. Преобразовать его, прибавив к четным числам первый элемент. Первый и последний элементы мас-сива не изменять. 2.…

Запрос пользователя

2 вариант 1.  Дан целочисленный массив, состоящий из n элементов. Преобразовать его, прибавив к четным числам первый элемент. Первый и последний элементы мас-сива не изменять. 2.  Найти минимальный положительный из данных п элементов. Если требуемые элементы отсутствуют, то вывести 0. 3.  Дан набор из п целочисленных элементов. Найти количество элементов, со-держащихся между первым и последним максимальным. Если в наборе имеется единственный максимальный элемент, то вывести -1. написать программы на языке с++ с пояснениями, используя пространство имён std,решить с помощью случайной генерации. массива

Ответ нейросети
26 марта 2025 10:49

Давайте решим предложенные задачи один за другим, используя язык C++ и предоставим пояснения к каждому шагу. Мы будем использовать пространство имен std, как указано.

Задача 1:

  1. Преобразовать целочисленный массив, прибавив к четным числам первый элемент. Первый и последний элементы массива сохраняются.

Решение:

#include <iostream>
#include <vector>
#include <cstdlib> // для rand() и srand()
#include <ctime>   // для time()

using namespace std;

int main() {
    // Инициализируем генератор случайных чисел
    srand(time(0));
    
    // Генерируем случайный массив
    int n = 10; // размер массива
    vector<int> arr(n);
    
    for (int i = 0; i < n; i++) {
        arr[i] = rand() % 100; // случайные числа от 0 до 99
    }

    // Выводим исходный массив
    cout << "Исходный массив: ";
    for (int num : arr) {
        cout << num << " ";
    }
    cout << endl;

    // Сохраняем первый элемент
    int firstElement = arr[0];

    // Преобразуем массив, прибавляя первый элемент к четным числам
    for (int i = 1; i < n - 1; i++) { // начинаем с 1 и заканчиваем на n-2
        if (arr[i] % 2 == 0) {
            arr[i] += firstElement;
        }
    }

    // Выводим преобразованный массив
    cout << "Преобразованный массив: ";
    for (int num : arr) {
        cout << num << " ";
    }
    cout << endl;

    return 0;
}

Пояснения:

  • Мы сначала инициализируем генератор случайных чисел с помощью srand(time(0)), чтобы получать разные случайные массивы при каждом запуске.
  • Генерируем массив из 10 случайных целых чисел от 0 до 99.
  • Сохраняем первый элемент массива и затем проходим по элементам с 1 до n-2 (не трогаем первый и последний элементы).
  • Если элемент четный, добавляем к нему первый элемент и сохраняем результат обратно.
  • Выводим как исходный, так и преобразованный массив.

Задача 2:

  1. Найти минимальный положительный элемент из n элементов. Если таких нет, вывести 0.

Решение:

#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <limits> // для std::numeric_limits

using namespace std;

int main() {
    srand(time(0));
    
    int n = 10; // размер массива
    vector<int> arr(n);
    
    for (int i = 0; i < n; i++) {
        arr[i] = rand() % 201 - 100; // случайные числа от -100 до 100
    }

    // Выводим массив
    cout << "Массив: ";
    for (int num : arr) {
        cout << num << " ";
    }
    cout << endl;

    int minPositive = numeric_limits<int>::max(); // инициализируем максимальным возможным значением
    for (int num : arr) {
        if (num > 0 && num < minPositive) {
            minPositive = num; // обновляем минимальный положительный элемент
        }
    }

    // Если не нашли положительных, выводим 0
    if (minPositive == numeric_limits<int>::max()) {
        cout << "0" << endl;
    } else {
        cout << "Минимальный положительный элемент: " << minPositive << endl;
    }

    return 0;
}

Пояснения:

  • Мы снова генерируем случайный массив, но с элементами от -100 до 100.
  • Чтобы найти минимальный положительный элемент, инициализируем переменную minPositive самым большим значением, которое может принимать int, чтобы было с чем сравнить.
  • Проходя по элементам массива, мы ищем минимальное положительное значение. Если такой элемент не найден, выводим 0.

Задача 3:

  1. Найти количество элементов между первым и последним максимальным элементом массива.

Решение:

#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>

using namespace std;

int main() {
    srand(time(0));
    
    int n = 10; // размер массива
    vector<int> arr(n);
    
    for (int i = 0; i < n; i++) {
        arr[i] = rand() % 100; // случайные числа от 0 до 99
    }

    // Выводим массив
    cout << "Массив: ";
    for (int num : arr) {
        cout << num << " ";
    }
    cout << endl;

    int maxElement = -1;
    int firstIndex = -1;
    int lastIndex = -1;

    for (int i = 0; i < n; i++) {
        if (arr[i] > maxElement) {
            maxElement = arr[i];
            firstIndex = i; // обновляем индекс первого максимума
            lastIndex = i;  // обновляем индекс максимума
        } else if (arr[i] == maxElement) {
            lastIndex = i;  // обновляем индекс последнего максимума
        }
    }

    if (firstIndex == lastIndex) {
        cout << "-1" << endl; // если единственный максимальный элемент
    } else {
        int count = lastIndex - firstIndex - 1; // количество между
        cout << "Количество элементов между первым и последним максимальным: " << count << endl;
    }

    return 0;
}

Пояснения:

  • Генерируем массив из случайных чисел от 0 до 99.
  • Ищем максимальное значение, одновременно фиксируя первые и последние индексы его появления.
  • Если первый и последний индекс совпадают, значит, элемент единственный и мы выводим -1.
  • В противном случае, выводим количество элементов между этими индексами.

Заключение

Каждая из задач решена с помощью C++, с использованием случайной генерации массива, и сопровождается пояснениями, чтобы лучше понять логику и реализацию. Вы всегда можете менять размер массива и диапазон, чтобы проверить различные случаи.