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


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

using namespace std;

int main() {
    // Настройка генератора случайных чисел
    srand(time(0)); 

    // ==========================================
    // ЗАДАНИЕ 1: Одномерный массив X(N)
    // ==========================================
    cout << "--- Задание 1: Одномерный массив ---" << endl;
    
    int N;
    cout << "Введите размер массива N: ";
    cin >> N;
    
    // Создаем массив с запасом (чтобы не усложнять код динамической памятью new/delete)
    int X[100]; 
    
    cout << "Введите элементы массива через пробел: ";
    for (int i = 0; i < N; i++) {
        cin >> X[i];
    }
    
    // Ищем максимальный элемент и его индекс
    int max_val = X[0];
    int max_index = 0;
    
    for (int i = 1; i < N; i++) {
        if (X[i] > max_val) {
            max_val = X[i];
            max_index = i;
        }
    }
    
    // Считаем сумму элементов после максимального
    int sum_after = 0;
    for (int i = max_index + 1; i < N; i++) {
        sum_after += X[i];
    }
    
    cout << "Максимальный элемент: " << max_val << " (на позиции " << max_index << ")" << endl;
    cout << "Сумма элементов после максимального: " << sum_after << endl << endl;


    // ==========================================
    // ЗАДАНИЕ 2: Матрица 8x8
    // ==========================================
    cout << "--- Задание 2: Матрица 8x8 ---" << endl;
    
    const int SIZE = 8;
    int matrix[SIZE][SIZE];
    
    // Заполняем матрицу случайными числами от 1 до 9 и выводим её
    cout << "Сгенерированная матрица:" << endl;
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            matrix[i][j] = 1 + rand() % 9; 
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }
    
    // 1. Поиск суммы в заштрихованной области (ниже главной диагонали и сама диагональ)
    // Главная диагональ - это когда номер строки равен номеру столбца (i == j).
    // Всё что ниже - это когда номер строки больше (i > j).
    int shaded_sum = 0;
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            if (i >= j) { // Условие заштрихованной области
                shaded_sum += matrix[i][j];
            }
        }
    }
    cout << "\nСумма в заштрихованной области: " << shaded_sum << endl;
    
    // 2. Формируем одномерный массив из сумм нечетных столбцов
    // В C++ счет идет с нуля. Нечетные по ИНДЕКСУ столбцы: 1, 3, 5, 7. 
    int sums_array[4]; // Всего их будет 4
    int array_index = 0;
    
    for (int j = 1; j < SIZE; j += 2) { // Шагаем по столбцам: 1, 3, 5, 7
        int current_col_sum = 0;
        for (int i = 0; i < SIZE; i++) { // Проходим по всем строкам в этом столбце
            current_col_sum += matrix[i][j];
        }
        sums_array[array_index] = current_col_sum;
        array_index++;
    }
    
    // Выводим полученный массив
    cout << "Суммы нечетных столбцов (индексы 1, 3, 5, 7): ";
    for (int i = 0; i < 4; i++) {
        cout << sums_array[i] << " ";
    }
    cout << endl;

    return 0;
}