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

Подсчитать количество локальных минимумов заданной матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Строки. http://www.cyberforum.ru/cpp-beginners/thread319277.html
Здравствуйте. Помогите пожалуйста с задачей: ввести набор слов распечатать ее группами так чтобы слова каждой группы состояли из одинаковых букв Спасибо. буду очень, очень благодарен! На языке С(си).
C++ Показать процесс сортировки массива Подскажите, какой код нужно добавить, чтобы в программе: 1) каждое случайное число было в кружочке; 2) показывался процесс сортировки масиива (как происходит перестановка). Вот программа: #include <iostream> #include<time.h> #include<windows.h> http://www.cyberforum.ru/cpp-beginners/thread319265.html
Массивы C++
Найдите сумму тех чисел, которые чётные и отрицательные.:cofee2:
Отсортировать по убыванию элементы массива с нечетными номерами методом обмена в прогрмамме С++ C++
Дан целочисленный массив A(n) с элементами, сгенерированными случайными числами в диапазоне (-20,20). ТРЕБУЕТСЯ: Отсортировать по убыванию элементы массива с нечетными номерами методом обмена.:sorry:
C++ ошибка сегментирования http://www.cyberforum.ru/cpp-beginners/thread319233.html
При запуске скомпилированной (gcc) программы выскакивает ошибка сегментирования, а при запуске ее же в дебагере (gdb) -- program exited normally. Как такое понимать?
C++ Очередь Всем привет! Вопрос: целесообразно ли перегружать для очереди операторы ввода/вывода и оператор , для произвольного доступа к елементам ? Спасибо. подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.06.2011, 08:41     Подсчитать количество локальных минимумов заданной матрицы
Цитата Сообщение от nuri Посмотреть сообщение
if (arr[i][j]>=arr[i-1][j-1]) flag = false;
выход за передлы массива: массивы индексируются с ноля, цикл по j начинается ноля, тогда первое значение j-1 равно -1 (минус один), значит j-1<0, то есть второй индекс меньше ноля.

Добавлено через 2 часа 40 минут
Цитата Сообщение от nuri Посмотреть сообщение
Подсчитать количество локальных минимумов заданной матрицы размером 10 на 10. Найти сумму модулей элементов, расположенных выше главной диагонали
Разве это так делается?
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
#include "math.h"
#include "iostream.h"
#include "stdlib.h"
#include "time.h"
#define n 10
#define m 10
int main ()//Точка входа в программу перед первой операцией этой функции
{// Начало тела функции
 int a[n][m]; // сам массив. На c/c++ многомерные массивы заменяются массивами массивов, здесь декларирован массив из n элементов, каждый из которых есть массив из m элементов типа int. На тех языках, которые поддерживают многомерные массивы, многомерный массив есть массив массивов. Учитывая такую синонимичность, можно считать наш массив представлением двумерного массива n на m элментов типа int
 int i, j; // Основные индексы для перебора элементов
 int i1, j1; // Дополниетльные индексы для перебора соседних элементов
 int i1min, i1max, j1min, j1max; // Крайние значения дополниетльных индексов для перебора соседних элементов
 bool f; // Флаг. Если он true, то данный элмент - локальный минимуму
 srand(time(NULL)); // Инициируем генератор псевдослучайных чисел
 std::cout<<"рандомная матрица:"<<endl; // Вывод текста, endl - перевод строки
 for (i=0; i<n; ++i) // Цикл по i
 {// Начало тела цикла
  for (j=0; j<m; ++j) // Цикл по j
  {// Начало тела цикла
   a[i][j]=-100+rand()%201; // Пишем случайное число, отмасштабированное на диапазон (% - остаток, имеет диапазон от ноля до 201-1=200) и сдвинутое вычитанием в j-ый член i-го массива-члена массива a, то есть в элемент передставляемого им двумерного массива с индексами i,j
   std::cout<<a[i][j]<<" "; // Выводим этоn элемент и пробел
  }//Конец тела цикла
  std::cout<endl; // Перевод строки
 }//Конец тела цикла
 std::cout<<"минимуммы:"<<endl; // Вывод текста, endl - перевод строки
 for (i=0; i<n; ++i) // Цикл по i, перебираем элементы-кандидаты
 {// Начало тела цикла
  if (i==0)// Выше нет элементов?
  {// Выше нет элементов
   i1min=i;
  }// Выше нет элементов
  else// Выше есть элементы?
  {// Выше есть элементы
   i1min=i-1;
  }// Выше есть элементы
  if (i==n)// Ниже нет элементов?
  {// Ниже нет элементов
   i1min=i;
  }// Ниже нет элементов
  else// Ниже есть элементы?
  {// Ниже есть элементы
   i1max=i+1;
  }// Ниже есть элементы    
  for (j=0; j<m; ++j) // Цикл по j, перебираем элементы-кандидаты
  {// Начало тела цикла
   if (j==0)// Левее нет элементов?
   {// Левее нет элементов
    j1min=j;
   }// Левее нет элементов
   else// Левее есть элементы?
   {// Левее есть элементы
    j1min=j-1;
   }// Левее есть элементы
   if (j==m)// Правее нет элементов?
   {// Правее нет элементов
    j1min=j;
   }// Правее нет элементов
   else// Правее есть элементы?
   {// Правее есть элементы
    j1max=j+1;
   }// Правее есть элементы
   for (i1=i1min, flag=true; i1<=i1max; ++i1) // Цикл по i1, перебираем элементы, соседние с i,j. По-умолчанию считаем, что это искомый минимум
   {//Начало тела цикла
    for (j1=j1min; j1<=j1max; ++j1) // Цикл по i1, перебираем элементы, соседние с i,j. По-умолчанию считаем, что это искомый минимум
    {//Начало тела цикла
     if (a[i][j]>a[i1][j1]) // Рядом есть меньший элемент?
     {// Рядом есть меньший элемент
      flag=false; // Значит это не минимум
     }// Рядом есть меньший элемент 
    }//Конец тела цикла
   }//Конец тела цикла
   if (flag) // эквивалентно if (flag!=false), true по определению !=false. В нашем случае несёт семантику if (данный элемент - локалтьный минимум)
   {//данный элемент - локалтьный минимум
    std::cout<<"a["<<i<<", ""<j<<]="<<a[i][j]<<" "<<endl;// Вывод текста
   }//данный элемент - локалтьный минимум
  }//Конец тела цикла
 }//Конец тела цикла
}// Конец тела функции
Добавлено через 1 минуту
Цитата Сообщение от pito211 Посмотреть сообщение
так они и есть еонстанты
Извини, не увидел const.
 
Текущее время: 23:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru