03.05.2016, 22:04
общий
это ответ
Здравствуйте, YarLam125!
Можно сделать, например, так:
[code h=200]
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <malloc.h>
#define M 7
#define N 6
int** MakeArray(int rows, int columns)
{
int **A = (int**)malloc(rows*sizeof(int));
for(int i=0; i<rows; i++)
{
A[i] = (int*)malloc(columns*sizeof(int));
for(int j=0; j<columns; j++)
A[i][j] = rand()%100;
}
return A;
}
void PrintArray(int** A, int rows, int columns)
{
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
printf("%4d ", A[i][j]);
printf("\n");
}
}
//Подсчет локальных минимумов
//Проходим по всем элементам матрицы
//и сравниваем со всеми соседями, если они есть!
//для этого проверяем граничное условие для индексов
//инкремент счетчика произойдет, только если будут выполнены четыре условия
//иначе - на анализ следующего элемента массива
int CalcLocalsMinimums(int** A, int rows, int columns)
{
int count = 0;
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
{
if ((i>0) && (A[i][j] >= A[i-1][j]))
continue;
if ((i<rows-1) && (A[i][j] >= A[i+1][j]))
continue;
if ((j>0) && (A[i][j] >= A[i][j-1]))
continue;
if ((j<columns-1) && (A[i][j] >= A[i][j+1]))
continue;
count++;
}
}
return(count);
}
void DelArray(int** A, int rows)
{
for(int i=0; i<rows; i++)
free(A[i]);
free(A);
}
int main()
{
int **A;
srand(time(0));
A = MakeArray(M, N);
PrintArray(A, M, N);
printf("\nLocal minimums count = %d\n", CalcLocalsMinimums(A, M, N));
DelArray(A, M);
return 0;
}[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен