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


#include <iostream>
using namespace std;

int main() {
    int N, M;
    
    // Ввод размеров матрицы
    cout << "Введите количество строк N: ";
    cin >> N;
    cout << "Введите количество столбцов M: ";
    cin >> M;
    
    // Создание матрицы N x M
    int matrix[100][100]; // ограничим размер для простоты
    
    // Ввод элементов матрицы
    cout << "Введите элементы матрицы:\n";
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            cin >> matrix[i][j];
        }
    }
    
    // Поиск минимального элемента и его координат
    int min_val = matrix[0][0];
    int min_row = 0, min_col = 0;
    
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            if (matrix[i][j] < min_val) {
                min_val = matrix[i][j];
                min_row = i;
                min_col = j;
            }
        }
    }
    
    cout << "Минимальный элемент: " << min_val << endl;
    cout << "Его позиция: строка " << min_row << ", столбец " << min_col << endl;
    
    // Проверяем, можно ли поменять местами
    if (min_row >= M || min_col >= N) {
        cout << "Невозможно поменять местами: размеры матрицы не позволяют.\n";
        cout << "Строка имеет длину " << M << ", столбец имеет высоту " << N << endl;
        return 1;
    }
    
    // Меняем местами строку и столбец
    for (int k = 0; k < min_row && k < min_col; k++) {
        int temp = matrix[min_row][k];
        matrix[min_row][k] = matrix[k][min_col];
        matrix[k][min_col] = temp;
    }
    
    // Особый случай - обмен элемента на пересечении (остается на месте)
    // Элемент matrix[min_row][min_col] не меняется
    
    // Если строка длиннее столбца
    if (M > N) {
        for (int j = min_col + 1; j < M; j++) {
            if (j == min_col) continue;
            // Не можем обменять, так как соответствующих элементов в столбце нет
        }
    }
    // Если столбец длиннее строки
    else if (N > M) {
        for (int i = min_row + 1; i < N; i++) {
            if (i == min_row) continue;
            // Не можем обменять, так как соответствующих элементов в строке нет
        }
    }
    
    // Вывод результата
    cout << "Матрица после обмена:\n";
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }
    
    return 0;
}