Дана квадратная матрица размером nxn. Найти минимальный элемент среди элементов, расположенных ниже главной диагонали, найти максимальный элемент, среди элементов расположенных выше побочной диагонали. Найденные минимальный и максимальный элементы поменять местами и вывести их индексы.
// main_secondary_diagonal.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char* argv[])
{
srand(time(NULL));
int size_array; // размер квадратной матрицы
setlocale(LC_ALL, "rus");
cout << "Введите размер квадратной матрицы: ";
cin >> size_array;
// динамическое создание двумерного массива
int **arrayPtr = new int* [size_array];
for (int count = 0; count < size_array; count++)
arrayPtr[count] = new int [size_array];
for (int counter_rows = 0; counter_rows < size_array; counter_rows++)
{
for (int counter_columns = 0; counter_columns < size_array; counter_columns++)
{
arrayPtr[counter_rows][counter_columns] = rand() % 100; // заполнение массива случайными числами
cout << setw(2) << arrayPtr[counter_rows][counter_columns] << " "; // вывод на экран двумерного массива
}
cout << endl;
}
cout << endl;
int min = arrayPtr[1][0], // минимальный елемент массива, ниже главной диагонали
row_min = 1, // номер строки минимального элемента
column_min = 0; // номер столбца минимального элемента
// поиск минимального элемента в массиве, ниже главной диагонали
for (int counter_rows = 1; counter_rows < size_array; counter_rows++)
{
for (int counter_columns = 0; counter_columns < counter_rows ; counter_columns++)
{
if ( arrayPtr[counter_rows][counter_columns] < min )
{
min = arrayPtr[counter_rows][counter_columns];
row_min = counter_rows;
column_min = counter_columns;
}
}
}
cout << "min" << "[" << (row_min + 1) << "][" << (column_min + 1) << "]" << " = " << min << endl;
int max = arrayPtr[0][0], // максимальный элемнет массива, выше побочной диагонали
row_max = 0, // номер строки максимального элемента
column_max = 0; // номер столбца максимального элемента
for (int counter_rows = 0; counter_rows < size_array - 1; counter_rows++)
{
for (int counter_columns = 0; counter_columns < (size_array - counter_rows - 1); counter_columns++)
{
if ( arrayPtr[counter_rows][counter_columns] > max )
{
max = arrayPtr[counter_rows][counter_columns];
row_max = counter_rows;
column_max = counter_columns;
}
}
}
cout << "max" << "[" << (row_max + 1) << "][" << (column_max + 1) << "]" << " = " << max << endl;
//////////////////перестановка элементов////////////////////////////////////////////////
arrayPtr[row_min][column_min] = max;
arrayPtr[row_max][column_max] = min;
////////////////////////////////////////////////////////////////////////////////////////
cout << "nМассив после перестановки максимального и минимального элементов:n";
for (int counter_rows = 0; counter_rows < size_array; counter_rows++)
{
for (int counter_columns = 0; counter_columns < size_array; counter_columns++)
{
cout << setw(2) << arrayPtr[counter_rows][counter_columns] << " "; // вывод на экран двумерного массива
}
cout << endl;
}
cout << endl;
cout << "min" << "[" << (row_max + 1) << "][" << (column_max + 1) << "]" << " = " << min << endl;
cout << "max" << "[" << (row_min + 1) << "][" << (column_min + 1) << "]" << " = " << max << endl;
// удаление двумерного динамического массива
for (int count = 0; count < size_array; count++)
delete []arrayPtr[count];
system("pause");
return 0;
}
Результат работы программы показан ниже:
CppStudio.com
Введите размер квадратной матрицы: 5 85 0 69 71 20 31 1 7 12 10 93 19 8 18 18 1 35 41 98 41 45 36 73 22 66 min[4][1] = 1 max[3][1] = 93 Массив после перестановки максимального и минимального элементов: 85 0 69 71 20 31 1 7 12 10 1 19 8 18 18 93 35 41 98 41 45 36 73 22 66 min[3][1] = 1 max[4][1] = 93
Комментарии
Mekan Nepesow
#include<iostream>
#include<iomanip>
#include<stdlib.h>
using namespace std;
int main()
{
int A[100][100];
int n;
cin>>n;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
// cin>>A[i][j];
A[i][j]=rand()%50;
}
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
cout<<setw(5)<<A[i][j];
}
cout<<endl;
}
int min=A[1][1];
int m=2,k=0,l=0;
for(int i=2; i<=n; i++)
{
for(int j=1;j<=m; j++)
{
if(A[i][j]<min)
{
min=A[i][j];
k=i;
l=j;
}
}
m++;
}
m=0;int r,t,max=-1;
for(int i=n; i>=1; i—)
{
for(int j=n; j>=n-m; j—)
{
if(A[i][j]>max)
{
max=A[i][j];
r=i;
t=j;
}
}
}
int h=0;
h=A[k][l];
A[k][l]=A[r][t];
A[r][t]=h;
cout<<endl;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
cout<<setw(5)<<A[i][j];
}
cout<<endl;
}
cout<<A[k][l]<<endl;
cout<<«i—>»<<k<<endl;
cout<<«j—>»<<l<<endl;
cout<<A[r][t]<<endl;
cout<<«i—>»<<r<<endl;
cout<<«j—>»<<t<<endl;
return 0;
}
Костя Сатив
include "stdafx.h" #include <iostream> #include <ctime> #include <cstdlib> #include <iomanip> using namespace std; int main() { setlocale(0,""); srand(time(NULL)); int size_array; cout << "Введите размер квадратной матрицы: "; cin >> size_array; // динамическое создание двумерного массива int **arrayPtr = new int* [size_array]; for (int count = 0; count < size_array; count++) arrayPtr[count] = new int [size_array]; for (int counter_rows = 0; counter_rows < size_array; counter_rows++) { for (int counter_columns = 0; counter_columns < size_array; counter_columns++) { arrayPtr[counter_rows][counter_columns] = 9+rand() % 89; // заполнение массива случайными числами cout << setw(4) <<"["<<counter_rows+1<<"]["<<counter_columns+1<<"] "<< arrayPtr[counter_rows][counter_columns] << " "; // вывод на экран двумерного массива } cout << endl; } cout << endl; int min=arrayPtr[1][0]; int index1=0,index2=0; for (int i = 0; i< size_array; i++) { for (int j = 0; j < size_array; j++) { if(i==j) break; if(min>arrayPtr[i][j]) { min=arrayPtr[i][j]; index1=i; index2=j; } } } cout<<"min ["<<index1+1<<"]["<<index2+1<<"] = "<<min<<endl; int max=0; int index3=0,index4=0; for (int i = 0; i< size_array; i++) { for (int j = 1; j < size_array; j++) { if(i==j) continue; if(max<arrayPtr[i][j]) { max=arrayPtr[i][j]; index3=i; index4=j; } } } cout<<"max ["<<index3+2<<"]["<<index4+1<<"] = "<<max<<endl; cout<<arrayPtr[index1][index2]<<" "<<arrayPtr[index3][index4]<<endl; arrayPtr[index1][index2]=max; arrayPtr[index3][index4]=min; for (int counter_rows = 0; counter_rows < size_array; counter_rows++) { for (int counter_columns = 0; counter_columns < size_array; counter_columns++) { cout << setw(4) <<"["<<counter_rows+1<<"]["<<counter_columns+1<<"] "<< arrayPtr[counter_rows][counter_columns] << " "; // вывод на экран двумерного массива } cout << endl; } }gornyyvladimir
#include <vcl.h> #include <iostream.h> #include <vector> #include <iterator> #pragma hdrstop #pragma argsused int main(int argc, char* argv[]) { srand( time( 0 ) ); size_t row,col; cout<<"Enter ROWS: "; cin>>row; cout<<"Enter COLUMNS: "; cin>>col; std::vector<std::vector<int> > matrix; for(size_t i = 0; i < row; ++i) { std::vector<int> temp; for(size_t j = 0; j < col; ++j) temp.push_back(rand() % 100); matrix.push_back(temp); } for(size_t i=0; i<row; i++) { for(size_t j=0; j<row; j++) { cout<<matrix.at(i).at(j)<<" "; } cout<<'\n'; } int min = matrix.at(1).at(0); size_t minrow = 1,mincol=0; for(size_t i=0,j=0; (i<row) && (j<col); i++, j++) { for(size_t r=i+1; r<row; r++) { if(min>matrix.at(r).at(j)) { min=matrix.at(r).at(j); minrow = r; mincol = j; } } } //cout<<min<<'\n'; int max = matrix.at(row-2).at(0); size_t maxrow = row-2,maxcol=0; for(size_t i=row-1,j=0; (i>=0) && (j<col); i--,j++) { for(size_t r=0; r<i; r++) { if(max<matrix.at(r).at(j)) { max=matrix.at(r).at(j); maxrow = r; maxcol = j; } } } matrix.at(minrow).at(mincol) = max; matrix.at(maxrow).at(maxcol) = min; cout<<"min"<<"["<<minrow<<"]["<<mincol<<"] = "<<min<<"\n"; cout<<"max"<<"["<<maxrow<<"]["<<maxcol<<"] = "<<max<<"\n\n"; cout<<"Matrix after transposition: \n"; for(size_t i=0; i<row; i++) { for(size_t j=0; j<row; j++) { cout<<matrix.at(i).at(j)<<" "; } cout<<'\n'; } system("pause"); return 0; }gornyyvladimir
#include <vcl.h> #include <iostream.h> #include <vector> #include <iterator> #pragma hdrstop #pragma argsused int main(int argc, char* argv[]) { srand( time( 0 ) ); size_t row,col; cout<<"Enter ROWS: "; cin>>row; cout<<"Enter COLUMNS: "; cin>>col; std::vector<std::vector<int> > matrix; for(size_t i = 0; i < row; ++i) { std::vector<int> temp; for(size_t j = 0; j < col; ++j) temp.push_back(rand() % 100); matrix.push_back(temp); } for(size_t i=0; i<row; i++) { for(size_t j=0; j<row; j++) cout<<matrix.at(i).at(j)<<" "; cout<<'\n'; } int min = matrix.at(1).at(0); size_t minrow = 1,mincol=0; for(size_t i=0,j=0; (i<row) && (j<col); i++, j++) { for(size_t r=i+1; r<row; r++) if(min>matrix.at(r).at(j)) { min=matrix.at(r).at(j); minrow = r; mincol = j; } } int max = matrix.at(row-2).at(0); size_t maxrow = row-2,maxcol=0; for(size_t i=row-1,j=0; (i>=0) && (j<col); i--,j++) { for(size_t r=0; r<i; r++) if(max<matrix.at(r).at(j)) { max=matrix.at(r).at(j); maxrow = r; maxcol = j; } } matrix.at(minrow).at(mincol) = max; matrix.at(maxrow).at(maxcol) = min; cout<<"min"<<"["<<minrow<<"]["<<mincol<<"] = "<<min<<"\n"; cout<<"max"<<"["<<maxrow<<"]["<<maxcol<<"] = "<<max<<"\n\n"; cout<<"Matrix after transposition: \n"; for(size_t i=0; i<row; i++) { for(size_t j=0; j<row; j++) cout<<matrix.at(i).at(j)<<" "; cout<<'\n'; } system("pause"); return 0; }