В какой версии глюки? 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;
} |
|
. Первая версия не может передать статический массив массивов в функцию.
1
|