Форум программистов, компьютерный форум CyberForum.ru

Двумерный массив, поиск локального минимума - доработать код - C++

Восстановить пароль Регистрация
 
FloraWinx
 Аватар для FloraWinx
4 / 4 / 1
Регистрация: 05.10.2013
Сообщений: 122
09.07.2014, 02:02     Двумерный массив, поиск локального минимума - доработать код #1
Написал следующий код, вроде запускается и работает только не всегда корректно считает. Задача в следующем найти локальные минимумы ( если элемент строго меньше его соседей ). Здесь еще надо учесть тот момент что элемент может стоять на границе и можно выйти за пределы массива но я это учел.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <ctime>
#include <conio.h>
using namespace std;
 
 
bool check_border (int **array , int x , int y , int SIZE_X_X){
 
    int value = array[x][y];
 
 
      if( x>0 &&y>0){
             
            if(x>0 && y>0 && x<SIZE_X_X && y<SIZE_X_X &&( value>array[x+1][y] || value > array[x-1][y] || value> array[x][y+1] || value > array[x][y-1])){return false;}
      }
 
      if(x=0 && y>0 && y<SIZE_X_X) {
          if( value>array[x][y-1] || value>array[x][y+1] ){return false;}
      }
 
      if( y=0 && x>0 && x<SIZE_X_X){
          if(value>array[x-1][y] || value>array[x+1][y]){return false;}
      }
 
      if (x=SIZE_X_X && y>0 && y<SIZE_X_X){
          if(value>array[x][y+1] || value>array[x][y-1]){return false;}
      }
 
      if(y=SIZE_X_X && x>0 && x<SIZE_X_X){
          if(value>array[x+1][y] || value>array[x-1][y]){return false;}
      }
 
     if(x==0 && y==0){
         if(value>array[x+1][y] || value > array[x][y+1]){return false;} // left corner
     }
 
     if(x==SIZE_X_X && y==0 ){
         if(value > array[SIZE_X_X-1][y] || value > array[SIZE_X_X][y+1]){return false;} //left corner
     }
 
     if(x==0 &&  y==SIZE_X_X) {
         if(value > array[x+1][SIZE_X_X] || value >array [x][SIZE_X_X-1]){return false;}
     }
 
 
     if(x==SIZE_X_X && y == SIZE_X_X) {
         if(value > array[SIZE_X_X-1][SIZE_X_X] ||  value >array[SIZE_X_X][SIZE_X_X-1] ){return false;}
     }
 
    return true;
}
 
int main(){
 
int n;
srand (time(NULL));
cin>>n;
int **p = new int *[n];
   
  for(int i=0;i <n; i++){
      p[i] = new int [n];
    for(int j=0;j<n;j++){
     p[i][j] = rand()%203-100;
     cout<<p[i][j]<<"\t";}
    cout<<endl;}
 
  int count=0;
  for(int i=1; i< n-1; i++) {
      for( int j=1; j< n-1; j++){
 
          if (check_border (p , i,j,n)==true){
              cout<<"Local minimum was detected : \t"<<p[i][j]<<"\t";
              count++;
          }
      }}
  cout<<"there are \t " << count <<"\t local minimums "<<endl;
  _getch();
 
return 0;}
кто может посмотреть? когда ввожу матрицу размера 3 то нечего не находит и для 2 тоже.

Добавлено через 8 минут
извините в цикле
C++
1
2
 for(int i=0; i< n; i++) {
      for( int j=0; j< n; j++){
тогда ошибки с памятью
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2014, 02:02     Двумерный массив, поиск локального минимума - доработать код
Посмотрите здесь:

C++ Нахождение локального минимума
Массив. Помогите доработать код, подскажите где ошибки. C++
C++ Двумерный массив. Поиск максимального элемента в выбранном столбце.
C++ Поиск минимума
Двумерный массив, сравнение, поиск максимального, замена C++
Вставка нового элемента в двумерный динамический массив дополнить код C++
Двумерный массив, поиск минимального элемента C++
C++ Динамический двумерный массив строк и операции со строками (поиск, обрезка, слияние)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
09.07.2014, 02:05     Двумерный массив, поиск локального минимума - доработать код #2
FloraWinx, проще проверять края и углы отдельно, тогда о выходе за пределы массива не нужно будет беспокоиться.
Yandex
Объявления
09.07.2014, 02:05     Двумерный массив, поиск локального минимума - доработать код
Ответ Создать тему
Опции темы

Текущее время: 14:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru