bbfspirit
23-04-2013, 12:07
Здравствуйте!Подскажите пожалуйста накосячил что-то в коде не могу разобраться.Локальный минимум вывожу а сумму не могу подсчитать.
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером 10 на 10.
Найти сумму модулей элементов, расположенных выше главной диагонали.
#include "iostream"
void Input(int **Data, size_t n, size_t m);
size_t Count(int **Data, size_t n, size_t m);
bool Check(int **Data, size_t r, size_t c, size_t n, size_t m);
int main()
{
int arr [10][10];
Input(arr, 10, 10);
std::cout<<"Эта матрица имеет "<<Count(arr, 10, 10)<<" локальных минимумов"<<std::endl;
getch();
return 0;
}
void Input(int **Data, size_t n, size_t m)
{
size_t r;
size_t c;
std::cout<<"Введите массив:"<<std::endl;
for (r=0; r<n; ++r)
{
std::cout<<r<<"-тая строка:"<<std::endl;
for (с=0; с<m; ++с)
{
std::cout<<"a["<<r<<"]["<<c<<"]=";
std::cin>>a[r][c];
std::cout<<std::endl;
}
}
}
size_t Count(int **Data, size_t n, size_t m)
{
size_t Result;
size_t r;
size_t c;
Result=0;
for (r=0; r<n; ++r)
{
for (с=0; с<m; ++с)
{
if (Check(Data, r, c, n, m))
{
++Result;
}
}
}
return Result;
}
bool Check(int **Data, size_t r, size_t c, size_t n, size_t m)
{
int r1;
int c1;
for (r1=-1; r1<=1; ++r1)
{
if (((r+r1)>0)&&((r+r1)<n))
{
for (с1=-1; с1<=1; ++с1)
{
if ((r1!=0)||(c1!=0))
{
if (((c+c1)>0)&&((c+c1)<m))
{
if (Data[r][c]>=Data[r+r1][c+c1])
{
return false;
}
}
}
}
}
}
return true;
}
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером 10 на 10.
Найти сумму модулей элементов, расположенных выше главной диагонали.
#include "iostream"
void Input(int **Data, size_t n, size_t m);
size_t Count(int **Data, size_t n, size_t m);
bool Check(int **Data, size_t r, size_t c, size_t n, size_t m);
int main()
{
int arr [10][10];
Input(arr, 10, 10);
std::cout<<"Эта матрица имеет "<<Count(arr, 10, 10)<<" локальных минимумов"<<std::endl;
getch();
return 0;
}
void Input(int **Data, size_t n, size_t m)
{
size_t r;
size_t c;
std::cout<<"Введите массив:"<<std::endl;
for (r=0; r<n; ++r)
{
std::cout<<r<<"-тая строка:"<<std::endl;
for (с=0; с<m; ++с)
{
std::cout<<"a["<<r<<"]["<<c<<"]=";
std::cin>>a[r][c];
std::cout<<std::endl;
}
}
}
size_t Count(int **Data, size_t n, size_t m)
{
size_t Result;
size_t r;
size_t c;
Result=0;
for (r=0; r<n; ++r)
{
for (с=0; с<m; ++с)
{
if (Check(Data, r, c, n, m))
{
++Result;
}
}
}
return Result;
}
bool Check(int **Data, size_t r, size_t c, size_t n, size_t m)
{
int r1;
int c1;
for (r1=-1; r1<=1; ++r1)
{
if (((r+r1)>0)&&((r+r1)<n))
{
for (с1=-1; с1<=1; ++с1)
{
if ((r1!=0)||(c1!=0))
{
if (((c+c1)>0)&&((c+c1)<m))
{
if (Data[r][c]>=Data[r+r1][c+c1])
{
return false;
}
}
}
}
}
}
return true;
}