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


#include <iostream>
#include <vector>
#include <algorithm> // для sort
#include <climits>   // для INT_MAX, INT_MIN
#include <cstdlib>   // для rand, srand
#include <ctime>     // для time

using namespace std;

int main() {
    setlocale(LC_ALL, "Russian");
    srand(time(0));

    // =========================================================
    // ЗАДАНИЕ 1: Одномерный массив
    // =========================================================
    cout << "========== ЗАДАНИЕ 1 ==========" << endl;

    int N;
    cout << "Введите размер массива N: ";
    cin >> N;

    vector<int> X(N);

    // Заполнение массива случайными числами от -50 до 50
    cout << "Исходный массив X: ";
    for (int i = 0; i < N; i++) {
        X[i] = rand() % 101 - 50;
        cout << X[i] << " ";
    }
    cout << endl;

    // 1. Сортировка по возрастанию
    sort(X.begin(), X.end());

    cout << "Отсортированный массив X: ";
    for (int i = 0; i < N; i++) {
        cout << X[i] << " ";
    }
    cout << endl;

    // 2. Поиск суммы положительных элементов
    long long sum_positive = 0;
    for (int i = 0; i < N; i++) {
        if (X[i] > 0) {
            sum_positive += X[i];
        }
    }
    cout << "Сумма положительных элементов: " << sum_positive << endl;

    cout << endl;


    // =========================================================
    // ЗАДАНИЕ 2: Матрица 8x12
    // =========================================================
    cout << "========== ЗАДАНИЕ 2 ==========" << endl;

    const int ROWS = 8;
    const int COLS = 12;

    int matrix[ROWS][COLS];

    // 1. Заполнение и вывод матрицы
    cout << "Исходная матрица:" << endl;
    for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
            matrix[i][j] = rand() % 41 - 20; // от -20 до 20
            cout << matrix[i][j] << "\t";
        }
        cout << endl;
    }
    cout << "----------------------------------------" << endl;

    // 2. Поиск максимума в верхней и минимума в нижней области
    int mid_row = ROWS / 2; // 4

    int max_upper = INT_MIN;
    int min_lower = INT_MAX;

    // Верхняя область (строки 0..3)
    for (int i = 0; i < mid_row; i++) {
        for (int j = 0; j < COLS; j++) {
            if (matrix[i][j] > max_upper) {
                max_upper = matrix[i][j];
            }
        }
    }

    // Нижняя область (строки 4..7)
    for (int i = mid_row; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
            if (matrix[i][j] < min_lower) {
                min_lower = matrix[i][j];
            }
        }
    }

    cout << "Максимум в верхней области: " << max_upper << endl;
    cout << "Минимум в нижней области: " << min_lower << endl;

    // 3. Формирование одномерного массива из сумм четных строк
    vector<int> sums_even_rows;

    for (int i = 0; i < ROWS; i++) {
        if (i % 2 == 0) { // четные индексы: 0, 2, 4, 6
            int row_sum = 0;
            for (int j = 0; j < COLS; j++) {
                row_sum += matrix[i][j];
            }
            sums_even_rows.push_back(row_sum);
        }
    }

    cout << "Массив сумм четных строк: ";
    for (int val : sums_even_rows) {
        cout << val << " ";
    }
    cout << endl;

    return 0;
}