Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Найти сумму модулей элементо (http://forum.oszone.net/showthread.php?t=259234)

bbfspirit 23-04-2013 12:07 2138172

Найти сумму модулей элементо
 
Здравствуйте!Подскажите пожалуйста накосячил что-то в коде не могу разобраться.Локальный минимум вывожу а сумму не могу подсчитать.

Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером 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;
}


lxa85 25-04-2013 21:59 2139668

Блин, у меня глаза ломаются.
bbfspirit, используйте тег CODE для оформления программы. Ее читать не возможно!
Ну и комментарии не помешали бы. А то в однобуквенный переменных ориентироваться сомнительное удовольствие.
Код:

for (r=0; r<n; ++r) {
  for (с=0; с<m; ++с) {
    if (Check(Data, r, c, n, m)) {
      ++Result;
    }
  }
}

Это я так понял код поиска суммы. Здесь не понятен вызов процедуры Check (как и сути самой процедуры), и не ясно использование прямоугольной матрицы (M x N). Нет такого понятия "главная диагональ" для прямоугольных матриц. Для квадратных есть, для прямоугольных нет.


Время: 19:49.

Время: 19:49.
© OSzone.net 2001-