Sunteți pe pagina 1din 4

#include <iostream>

using namespace std;

const int maxRows = 20;


const int maxCols = 20;

void generateArray(int board[][maxCols], int R, int C);

void printArray(int board[][maxCols], int R, int C);

void checkPeakLows(int board[][maxCols], int R, int C, int PLR[], int PLC[], int& t);

void checkPeakHighs(int board[][maxCols], int R, int C, int PHR[], int PHC[], int& t);

int main()
{
int board[maxRows][maxCols];
int M = 20, N = 20;

generateArray(board, M, N);

printArray(board, M, N);

int PLR[1000];
int PLC[1000];

int tempNum = 0;//Where indexs are placed in the parrallel arrays


checkPeakLows(board, M, N, PLR, PLC, tempNum);

cout << "Low peaks are located at:" << endl;


for (int i = 0; i < tempNum; i++)
{
cout << "[" << PLR[i] << "]" << "[" << PLC[i] << "]" << endl;
}

int PHR[1000];
int PHC[1000];

checkPeakHighs(board, M, N, PHR, PHC, tempNum);


cout << "High peaks are located at:" << endl;
for (int i = 0; i < tempNum; i++)
{
cout << "[" << PHR[i] << "]" << "[" << PHC[i] << "]" << endl;
}

system("pause");
return 0;
}
void generateArray(int board[][maxCols], int R, int C)
{
int x = 0;
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
x = rand();
board[i][j] = x;
}
}
}

void printArray(int board[][maxCols], int R, int C)


{
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
cout << board[i][j] << ", ";
}
cout << endl;
}
}

void checkPeakLows(int board[][maxCols], int R, int C, int PLR[], int PLC[], int& t)//PLR - Peak Lower
Row, PLC - Peak Lower Column, parrallel arrays
{
//Check the inside of the array first
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
bool isLowPeak = false;
for (int p = i - 1; p < i + 2; p++)
{
if (p<0 || p >= R)
continue;
for (int k = j - 1; k < j + 2; k++)
{
if (k<0 || k >= C)
continue;
if (i == p)
if (j == k)
continue;
if (board[i][j] < board[p][k])
{
isLowPeak = true;
}
else
{
isLowPeak = false;
break;
}
}

if (!isLowPeak)
break;
}
if (isLowPeak)
{
PLR[t] = j;
PLC[t] = i;
t++;
}
}
}
}

void checkPeakHighs(int board[][maxCols], int R, int C, int PHR[], int PHC[], int& t)
{
t = 0;
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
bool isHighPeak = false;
for (int p = i - 1; p < i + 2; p++)
{
if (p<0 || p >= R)
continue;
for (int k = j - 1; k < j + 2; k++)
{
if (k<0 || k >= C)
continue;
if (i == p)
if (j == k)
continue;
if (board[i][j] > board[p][k])
{
isHighPeak = true;
}
else
{
isHighPeak = false;
break;
}
}

if (!isHighPeak)
break;
}
if (isHighPeak)
{
PHR[t] = j;
PHC[t] = i;
t++;
}
}
}
}

S-ar putea să vă placă și