Дана целочисленная квадратная матрица размером n*m. Написать программу, позволяющую исключать из нее столбец, в котором расположен минимальный элемент главной диагонали. Программу написать на C++, желательно с комментариями.

wami56 wami56    3   16.01.2022 19:48    0

Ответы
toguzov2005 toguzov2005  16.01.2022 19:50

Самый простой вариант без освобождения памяти:

#include<iostream>

#include<ctime>

signed main(){

   setlocale(LC_ALL, "Rus");

   srand(time(NULL));

   int n, m;

   std::cout << "Введите n: ";

   std::cin >> n;

   std::cout << "Введите m: ";

   std::cin >> m;

   /*

   Выделяем память под матрицу, везде используем переменную n для удобства, матрица у нас квадратная, значит n = m

   */

   int** matrix = new int* [n];  

   for (int i = 0; i < n; i++) {

       matrix[i] = new int[n];

   }

   /*

   Заполняем матрицу случайными числами и выводим сгенерированную матрицу на экран

   */

   std::cout << "Сгенерированная матрица:\n";

   for (int i = 0; i < n; i++){

       for (int j = 0; j < n; j++){

           matrix[i][j] = rand() % 10;

           std::cout << matrix[i][j] << " ";

       }

       std::cout << std::endl;

   }

   /*

   Ищем минимальный элемент на главной диагонали и его индекс.

   _min - минимальный элемент, _idxMin - индекс минимального элемента

   */

   int _min = matrix[0][0];

   int _idxMin = 0;

   for (int i = 0; i < n; i++){    

       if (_min > matrix[i][i]) {

           _min = matrix[i][i];

           _idxMin = i;

       }

   }

   /*

   Удаляем столбец с наименьшим элементом.    

   */

   for (int i = 0; i < n; i++)

       for (int j = _idxMin; j < n - 1; j++)

           matrix[i][j] = matrix[i][j + 1];

   

   /*

   Выводим на экран изменённую матрицу

   */

   std::cout << "\nМатрица после удаления столбца с минимальным элементом:\n";

   for (int i = 0; i < n; i++) {

       for (int j = 0; j < n-1; j++) {

           

           std::cout << matrix[i][j] << " ";

       }

       std::cout << std::endl;

   }

   return 0;

}

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика