#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;
}