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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегрузка операторов >>, <<, [] http://www.cyberforum.ru/cpp-beginners/thread816802.html
задача: написать перегруженные операторы <<, >> и для объекта массив деков символов. Объект дек реализован. проблема с квадратными скобками вроде понятно - пишем вот так - вроде правильно, если нет - прошу исправить. deq& DA::operator(int i) { return D; } const deq& DA:: operator(int i) const { return D;
C++ Не загружается (меню + всплывающее меню) из ресурсов, С++ Здравствуйте. Загружаю меню из ресурсов. Меню примерно такое: Пункт1 Пункт2 Подпункт1 Подпункт1 Подпункт2 Подпункт2 и тд. Вот код: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) http://www.cyberforum.ru/cpp-beginners/thread816792.html
Ошибка в проверке C++
for (int i=0;A;i++) { if (isdigit(A)) { F1=A; } } puts(F1); Что не так???
Перегрузка операторов при наследовании C++
Есть базовый(StringType) и производный(tcomplex) классы. Соотвественно это строка и комплексное число. По заданию необходимо было создать массив указателей на базовый класс и заполнить его указателями на производный класс. Это вроде бы есть. Далее следует перегрузить операторы для работы с комплексными числами и показать их использование. Есть по программе два вопроса: 1) Как перегрузить (или...
C++ Загадочный цикл http://www.cyberforum.ru/cpp-beginners/thread816773.html
Здравствуйте. Помогите кто знает найти ошибку. По сути дела должно быть так: Я вызываю эту функцию у ввожу пользователей и их данные, и при этом порядковый номер аккаунта вводится автоматически. До этого момента всё хорошо, но как только я решаю больше не вводить пользователей, то (программа так не думает) и предлагает продолжать вводить пользователей, и при этом порядковый номер опять...
C++ как написать код? Для массива есть 5 цифр:12345. приписать с конца в обратку, убрать одно,при втором шаге убрать 2 и т.дд сохраняем кол-во цифр каждый раз, и далее так далее пока кол-во цифр не будет больше или равно 502. подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.03.2013, 06:08     Подсчитать количество локальных минимумов
В какой версии глюки?
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
#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;
}
? Или
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "iostream"
void Input(int **Data, size_t n, size_t m);
void Create(int **&Data, size_t n, size_t m);
void Free(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()
{
 size_t n;
 size_t m; 
 int **arr;
 std::cout<<"Введите размеры матрицы:"<<std::endl;
 std::cout<<"Количество строк=";
 std::cin>>n;
 std::cout<<"Количество столбцов=";
 std::cin>>m;
 std::cout<<std::endl;
 Create(arr, n, m);
 Input(arr, n, m);
 std::cout<<"Эта матрица имеет "<<Count(arr, n, m)<<" локальных минимумов"<<std::endl;
 Free(arr, n, m);
 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(arr, 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 (arr[r][c]>=arr[r+r1][c+c1])
      {
       return false;
      }
     }
    }
   }
  }
 }
 return true;
}
void Create(int **&Data, size_t n, size_t m)
{
 size_t r;
 Data=new int* [n];
 for (r=n-1; r<n; --r)
 {
  Data[r]=new int [m];
 }
}
void Free(int **&Data, size_t n, size_t m}
{
 size_t r;
 for (r=n-1; r<n; --r)
 {
  delete []Data[r];
 }
 delete []Data;
}
?

Добавлено через 24 минуты
Я кажется понял, проблема в первой версии. Протестировано:
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
void Input(int **Data, size_t n, size_t m);
void Create(int **&Data, size_t n, size_t m);
void Free(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()
{
 size_t n;
 size_t m; 
 int **arr;
 std::cout<<"Введите размеры матрицы:"<<std::endl;
 std::cout<<"Количество строк=";
 std::cin>>n;
 std::cout<<"Количество столбцов=";
 std::cin>>m;
 std::cout<<std::endl;
 Create(arr, n, m);
 Input(arr, n, m);
 std::cout<<"Эта матрица имеет "<<Count(arr, n, m)<<" локальных минимумов"<<std::endl;
 Free(arr, n, m);
 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 (c=0; c<m; ++c)
  {
   std::cout<<"a["<<r<<"]["<<c<<"]=";
   std::cin>>Data[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 (c=0; c<m; ++c)
  {
   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 (c1=-1; c1<=1; ++c1)
   {
    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;
}
void Create(int **&Data, size_t n, size_t m)
{
 size_t r;
 Data=new int* [n];
 for (r=n-1; r<n; --r)
 {
  Data[r]=new int [m];
 }
}
void Free(int **&Data, size_t n, size_t m)
{
 size_t r;
 for (r=n-1; r<n; --r)
 {
  delete []Data[r];
 }
 delete []Data;
}
. Первая версия не может передать статический массив массивов в функцию.
 
Текущее время: 14:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru