Найти min и max элементы квадратной матрицы и поменять местами строки, в которых находятся эти элементы - C (СИ)
Формулировка задачи:
Здраствуйте, стыдно просить такую глупость для вас, но сам я не могу реализовать вот такой код:
программа должна найти мин и макс элементы квадратной матрицы, и поменять местами строки, в которых находятся эти элементы, если номера строк совпадают, ничего не менять. Свой новый код писать не надо, препод уже этот видел, просто поредактируйте чуток
#include <stdio.h> #include <ctime> #include <iostream> int** inputrand(int **arr, int m ) { setlocale (LC_ALL, "Russian"); printf ("Введите размерность матрицы"); scanf ("%d", &m); for (int i=0; i<m; i++)//Это вообще не спрашивает почему-то, массив инициализируется неправильно. {for (int j=0; j<m; j++) arr[m][m]=rand()%20; } printf ("Начальная матрица:"); for (int i=0; i<m; i++) {for (int j=0; j<m; j++)// надо осуществить вид mXm,тоесть если 3 строки/столбца, то 3 элемента в строке printf ("%3,0d\t", arr[i][j]); } } void main(int m, int **arr, int min, int max, int minnum, int maxnum) { min=arr[0][0]; for ( int i=0; i<m; i++) {for (int j=0;j<m; j++) if (min>arr[i][j]) min=arr[i][j]; } max=arr[0][0]; for (int i=0; i<m; i++) {for (int j=0;j<m; j++) ////////////////////////// как присвоить переменной номер строки, в которой находится элемент? for (int i=0; i<m; i++) {for (int j=0;j<m; j++) if (min=arr[i][j]) minnum=i; if (min=arr[i][j]) maximum=i; } if <minnum=maxnum> printf ("Минимальный и максимальный элемент находятся в одной строке!") else {// Теперь надо поменять местами строки с мин и макс элементом, вывести получившуюся матрицу; }
Заранее благодарен за отзывы!
Решение задачи: «Найти min и max элементы квадратной матрицы и поменять местами строки, в которых находятся эти элементы»
textual
Листинг программы
#include <iostream> #include <ctime> using std::cout; using std::cin; using std::endl; int minimum, maximum,num_max,num_min; int** input(int **arr, int rows, int cols) { for(int i=0; i<rows; i++) { arr[i]=new int[cols]; for(int j=0; j<cols; j++) { arr[i][j]=rand()%9; } } return arr; } int min_max(int **arr, int rows, int cols) { int *min, *max; min = new int[cols]; max = new int[cols]; for(int i=0; i<rows; i++) { minimum = arr[i][0]; maximum = arr[i][0]; for(int j=0; j<cols; j++) { if (arr[i][j]<minimum) { minimum=arr[i][j]; } if (arr[i][j]>maximum) { maximum=arr[i][j]; } } max[i]=maximum; min[i]=minimum; } minimum = min[0]; maximum = max[0]; for(int i=0; i<cols; i++) { if (min[i]<minimum) { minimum = min[i]; num_min=i; } if (max[i]>maximum) { maximum = max[i]; num_max=i; } } delete [] min; delete [] max; return 0; } int main() { srand((unsigned)time(NULL)); setlocale(LC_ALL,"Russian"); int **arr; int rows,cols; cout<<"Введите количество строк: "; cin>>rows; cout<<endl; cout<<"Введите количество столбцов: "; cin>>cols; arr = new int*[rows]; input(arr, rows, cols); cout<<endl; cout<<"Начальная матрица: "<<endl; for(int i=0; i<rows; i++) { for(int j=0; j<cols; j++) { cout<<arr[i][j]<<" "; } cout<<endl; } min_max(arr, rows, cols); cout<<"min "<<minimum<<" is "<<num_min<<endl; cout<<"max "<<maximum<<" is "<<num_max<<endl; cout<<"Конечная матрица: "<<endl; for(int i=0; i<rows; i++) { if(i==num_min) { for(int j=0; j<cols; j++) { cout<<arr[num_max][j]<<" "; } } if(i==num_max) { for(int j=0; j<cols; j++) { cout<<arr[num_min][j]<<" "; } } if(i!=num_max&&i!=num_min) { for(int j=0; j<cols; j++) { cout<<arr[i][j]<<" "; } } cout<<endl; } for(int i=0; i<rows; i++) delete arr[i]; delete [] arr; return 0; }
Объяснение кода листинга программы
В этом коде выполняются следующие действия:
- Создается матрица случайных целых чисел с помощью функции
input()
. - С помощью функции
min_max()
находятся минимальный и максимальный элементы матрицы и их позиции. - Строки, в которых находятся минимальный и максимальный элементы, меняются местами с помощью условных операторов if.
- Выводится начальная матрица.
- Выводятся минимальный и максимальный элементы и их позиции.
- Выводится конечная матрица, в которой строки, в которых находятся минимальный и максимальный элементы, поменяны местами.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д