Используя функцию нахождения совпадающих элементов в матрице,найти максимальное из чисел,встречающихся в заданной матрице(n на n) более одного раза — C++(Си)
#include <iostream>
#include <ctime>
#include <iomanip>
void max_element (int **, int);
int main()
{
int size;
std::cout << "Input size of the matrix: ";
std::cin >> size;
int **MAS = new int *[size]; // динамически выделяем память.
for (int i = 0; i < size; i++)
MAS[i] = new int [size];
srand(time(NULL));
std::cout << "Start matrix:\n";
for (int i=0; i<size; i++) // заполняем матрицу и выводим на экран
{
for (int j=0; j<size; j++) {
MAS[i][j]=rand()%50;
std::cout << std::setw(3) << MAS[i][j]; }
std::cout << std::endl;
}
max_element (MAS, size);
for (int i = 0; i < size; i++) // освобождаем память.
delete []MAS[i];
delete []MAS;
system("pause");
return 0;
}
void max_element (int **MAS, int size)
{
int min=MAS[0][0];
int max=0, indexRow, indexColumn;
int max_two, indexRowTwo, indexColumnTwo;
for (int i=0; i<size; i++)
for (int j=0; j<size; j++)
{
if (min>MAS[i][j]) min=MAS[i][j];
if (max<MAS[i][j]) {
max=MAS[i][j];
indexRow=i;
indexColumn=j; }
}
MAS[indexRow][indexColumn]=min-1;
while (true)
{
max_two=0;
for (int i=0; i<size; i++)
for (int j=0; j<size; j++)
if (max_two<MAS[i][j]) {
max_two=MAS[i][j];
indexRowTwo=i;
indexColumnTwo=j; }
if (max==min-1) { std::cout << "False.\n"; break; }
else
if (max_two==max) { std::cout << "Max: " << max_two ; break; }
else {
max=max_two;
indexRow=indexRowTwo;
indexColumn=indexColumnTwo;
MAS[indexRowTwo][indexColumnTwo]=min-1; }
}
std::cout << std::endl;
}