Загрузка данных
#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;
}