Загрузка данных


#include <iostream>
#include <cmath>   // Для функции abs (модуль)
#include <cstdlib> // Для генерации случайных чисел
#include <ctime>   // Для привязки случайных чисел к времени

using namespace std;

int main() {
    setlocale(LC_ALL, "Russian"); // Чтобы русские буквы нормально отображались в консоли
    srand(time(NULL)); // Инициализация генератора случайных чисел

    // =================================================================
    // ЗАДАНИЕ 1: Одномерный массив X(N)
    // Найти количество элементов между максимальным и минимальным.
    // =================================================================
    cout << "--- ЗАДАНИЕ 1 ---\n";
    
    int N;
    cout << "Введите размер массива N: ";
    cin >> N;

    int* X = new int[N]; // Создаем динамический массив

    // Заполняем массив случайными числами и ищем мин/макс
    int minIndex = 0;
    int maxIndex = 0;

    cout << "Массив X: ";
    for (int i = 0; i < N; i++) {
        X[i] = rand() % 100; // Случайные числа от 0 до 99
        cout << X[i] << " ";

        // Запоминаем индексы, если нашли новый минимум или максимум
        if (X[i] < X[minIndex]) {
            minIndex = i;
        }
        if (X[i] > X[maxIndex]) {
            maxIndex = i;
        }
    }
    cout << "\n";

    // Считаем количество элементов между ними (по индексам)
    // Берем модуль разности индексов и вычитаем 1
    int countBetween = abs(maxIndex - minIndex) - 1;
    
    // Если они стоят рядом или массив из 1 элемента, между ними никого нет
    if (countBetween < 0) {
        countBetween = 0;
    }

    cout << "Минимальный элемент: " << X[minIndex] << " (индекс " << minIndex << ")\n";
    cout << "Максимальный элемент: " << X[maxIndex] << " (индекс " << maxIndex << ")\n";
    cout << "Количество элементов между ними: " << countBetween << "\n\n";

    delete[] X; // Очищаем память


    // =================================================================
    // ЗАДАНИЕ 2: Матрица 10x10
    // Сумма в заштрихованной области и массив из отриц. элементов нечетных столбцов.
    // =================================================================
    cout << "--- ЗАДАНИЕ 2 ---\n";

    int matrix[10][10];
    
    cout << "Сгенерированная матрица:\n";
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            matrix[i][j] = rand() % 41 - 20; // Числа от -20 до 20, чтобы были отрицательные
            cout << matrix[i][j] << "\t";
        }
        cout << "\n";
    }

    // 1. Ищем сумму в заштрихованной области (верхний и нижний треугольники)
    int sumShaded = 0;
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            // Условие для верхнего треугольника: i <= j И i + j <= 9
            // Условие для нижнего треугольника: i >= j И i + j >= 9
            if ((i <= j && i + j <= 9) || (i >= j && i + j >= 9)) {
                sumShaded += matrix[i][j];
            }
        }
    }
    cout << "\nСумма элементов в заштрихованной области: " << sumShaded << "\n";

    // 2. Формируем массив из количества отрицательных элементов в нечетных столбцах
    // Нечетные столбцы (по счету 1, 3, 5, 7, 9) имеют индексы 0, 2, 4, 6, 8.
    int B[5]; // Всего таких столбцов 5
    int b_index = 0;

    for (int j = 0; j < 10; j += 2) { // Шагаем через один: 0, 2, 4, 6, 8
        int negCount = 0;
        for (int i = 0; i < 10; i++) {
            if (matrix[i][j] < 0) {
                negCount++;
            }
        }
        B[b_index] = negCount; // Записываем результат в новый массив
        b_index++;
    }

    cout << "Массив кол-ва отрицательных элементов нечетных столбцов:\n";
    for (int i = 0; i < 5; i++) {
        cout << B[i] << " ";
    }
    cout << "\n";

    return 0;
}