C/C++

Переделайте код для задачи в С++

дана задача
Дана матрица A(n, m). Определить k – количество «особых» элементов массива А, считая элемент особым, если в его строке слева от него находятся элементы, меньшие его, а справа – большие

нужно исправить, чтобы было ограничение чтобы в строке при в строке было не меньше трех элементов матрицы
и переделать так, чтобы при поиске "особого" элемента слева от этого элемента находились элементы только меньше "особого" и с права находились только элементы которые будут больше "особого"

#include <iostream>
using namespace std;

int countSpecialElements(int** matrix, int n, int m) {
int count = 0;

for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
bool leftSmaller = true;
bool rightGreater = true;

for (int k = 0; k < j; k++) {
if (matrix[i][k] >= matrix[i][j]) {
leftSmaller = false;
break;
}
}

for (int k = j + 1; k < m; k++) {
if (matrix[i][k] <= matrix[i][j]) {
rightGreater = false;
break;
}
}

if (leftSmaller && rightGreater) {
count++;
}
}
}

return count;
}

int main() {
int n, m;
cout << "Enter the number of rows (n): ";
cin >> n;
cout << "Enter the number of columns (m): ";
cin >> m;

int** matrix = new int*[n];
for (int i = 0; i < n; i++) {
matrix[i] = new int[m];
cout << "Enter the elements of row " << i+1 << ": ";
for (int j = 0; j < m; j++) {
cin >> matrix[i][j];
}
}

int specialElements = countSpecialElements(matrix, n, m);
cout << "Number of special elements: " << specialElements << endl;

// Освобождаем память, выделенную для матрицы
for (int i = 0; i < n; i++) {
delete[] matrix[i];
}
delete[] matrix;

return 0;
}
#include <iostream>
using namespace std;

int countSpecialElements(int** matrix, int n, int m) {
int count = 0;
for (int i = 0; i < n; i++) {
if (m < 3) { // проверяем ограничение на минимальное количество элементов в строке
continue;
}
for (int j = 1; j < m - 1; j++) { // проверяем только элементы, которые имеют соседей слева и справа
bool leftSmaller = true;
bool rightGreater = true;
for (int k = 0; k < j; k++) {
if (matrix[i][k] >= matrix[i][j]) {
leftSmaller = false;
break;
}
}
if (!leftSmaller) { // если слева есть элемент, который больше или равен текущему, то переходим к следующему элементу
continue;
}
for (int k = j + 1; k < m; k++) {
if (matrix[i][k] <= matrix[i][j]) {
rightGreater = false;
break;
}
}
if (leftSmaller && rightGreater) {
count++;
}
}
}
return count;
}

int main() {
int n, m;
cout << "Enter the number of rows (n): ";
cin >> n;
cout << "Enter the number of columns (m): ";
cin >> m;

int** matrix = new int*[n];
for (int i = 0; i < n; i++) {
matrix[i] = new int[m];
cout << "Enter the elements of row " << i+1 << ": ";
for (int j = 0; j < m; j++) {
cin >> matrix[i][j];
}
}

int specialElements = countSpecialElements(matrix, n, m);
cout << "Number of special elements: " << specialElements << endl;

// Освобождаем память, выделенную для матрицы
for (int i = 0; i < n; i++) {
delete[] matrix[i];
}
delete[] matrix;

return 0;
}
Артём Колесников
Артём Колесников
1 620
Лучший ответ
Сергей Иванов это тоже самое что и у меня, а мне нужно эту переделать
 #include  

using namespace std;

int countSpecialElements(int** matrix, int n, int m) {

int count = 0;

for (int i = 0; i < n; i++) {
for (int j = 1; j < m-1; j++) {
bool leftSmaller = true;
bool rightGreater = true;

// Проверяем слева от элемента
for (int k = 0; k < j; k++) {
if (matrix[i][k] >= matrix[i][j]) {
leftSmaller = false;
break;
}
}

// Проверяем справа от элемента
for (int k = j+1; k < m; k++) {
if (matrix[i][k] n;

cout > m;

int** matrix = new int*[n];
for (int i = 0; i < n; i++) {
matrix[i] = new int[m];
cout