0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 18
1

Элемент матрицы называется локальным минумумом, если он строго меньше всех имеющихся у него соседей

03.04.2014, 07:40. Показов 2752. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
а) подсчитать количество локальных минимумов заданной матрицы размером 10 на 10
б) найти сумму модулей элементов,расположенных выше главной диагонали
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2014, 07:40
Ответы с готовыми решениями:

Элемент матрицы называется локальным минумумом, если он строго меньше всех имеющихся у него соседей
а) подсчитать количество локальных минимумов заданной матрицы размером 10 на 10 б) найти сумму...

Элемент матрицы называется локальным минимумом,если он строго меньше всех имеющихся у него соседей
Элемент матрицы называется локальным минимумом,если он строго меньше всех имеющихся у него...

Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей.Подсчитать количество локальных минимумов ...
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него...

Элемент последовательности называется локальным максимумом, если он строго больше предыдущего и последующего элемент
Элемент последовательности называется локальным максимумом, если он строго больше предыдущего и...

4
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
03.04.2014, 11:12 2
Вот, скорее всего есть универсальный алгоритм, но я что-то до него не допер.
а)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <stdio.h>
#define N 5
 
int DownRight (int mas[N][N], int i, int j)
{
    int k = mas[i][j];
    if (k<mas[i-1][j] && k<mas[i-1][j-1] && k<mas[i][j-1])
        return 1;
    else return 0;
}
 
int DownLeft (int mas[N][N], int i, int j)
{
    int k = mas[i][j];
    if (k<mas[i-1][j] && k<mas[i-1][j+1] && k<mas[i][j+1])
        return 1;
    else return 0;
}
 
int Down (int mas[N][N], int i, int j)
{
    int k = mas[i][j];
    if (k<mas[i][j-1] && k<mas[i-1][j-1] && k<mas[i-1][j] && k<mas[i-1][j+1] && k<mas[i][j+1])
        return 1;
    else return 0;
}
 
int TopLeft (int mas[N][N], int i,int j)
{
    int k = mas[i][j];
    if (k<mas[i][j+1] && k<mas[i+1][j+1] && k<mas[i+1][j])
        return 1;
    else return 0;
}
 
int TopRight (int mas[N][N], int i,int j)
{
    int k = mas[i][j];
    if (k<mas[i][j-1] && k<mas[i+1][j-1] && k<mas[i+1][j])
        return 1;
    else return 0;
}
 
int Top (int mas[N][N], int i,int j)
{
    int k = mas[i][j];
    if (k<mas[i][j-1] && k<mas[i+1][j-1] && k<mas[i+1][j] && k<mas[i+1][j+1] && k<mas[i][j+1])
        return 1;
    else return 0;
}
 
int Right (int mas[N][N], int i, int j)
{
    int k = mas[i][j];
    if (k<mas[i-1][j] && k<mas[i-1][j-1] && k<mas[i][j-1] && k<mas[i+1][j-1] && k<mas[i+1][j])
        return 1;
    else return 0;
}
 
int Left (int mas[N][N], int i, int j)
{
    int k = mas[i][j];
    if (k<mas[i-1][j] && k<mas[i-1][j+1] && k<mas[i][j+1] && k<mas[i+1][j+1] && k<mas[i+1][j])
        return 1;
    else return 0;
}
 
int All (int mas[N][N], int i,int j)
{
    int k = mas[i][j];
    if (k<mas[i-1][j-1] && k<mas[i-1][j] && k<mas[i-1][j+1] &&
        k<mas[i][j-1] && k<mas[i][j+1] &&
        k<mas[i+1][j-1] && k<mas[i-1][j] && k<mas[i+1][j+1])
        return 1;
    else return 0;
}
 
int Check (int mas[N][N], int i, int j)
{
    int value;
    if (i==N-1)
    {
        if (j==N-1)
            value = DownRight (mas,i,j);
        else if (j==0)
            value = DownLeft (mas,i,j);
        else value = Down (mas,i,j);
    }
    else if (i==0)
    {
        if (j==0)
            value = TopLeft (mas,i,j);
        else if (j==N-1)
            value = TopRight (mas,i,j);
        else value = Top (mas,i,j);
    }
    else if (j==N-1)
        value = Right (mas,i,j);
    else if (j==0)
        value = Left (mas,i,j);
    else value = All (mas,i,j);
    return value;
}
 
int main()
{
    int a[N][N] = 
    {
        {1,2,1,5,6},
        {2,3,4,-1,3},
        {5,6,2,-2,2},
        {1,0,4,5,6},
        {3,4,5,-2,0}
    };
    int i,j;
    int k;
    for (i=0; i<N; i++)
    {
        for (j=0; j<N; j++)
        {
            k = Check(a,i,j);
            if (k)
                printf ("Local minimum: %d, Indexes:[%d][%d]\n", a[i][j],i,j);
        }
    }
    return 0;
}
Добавлено через 1 час 22 минуты
б)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <math.h>
#define N 3
 
int main()
{
    int a[N][N] = 
    {
        {1,2,-1},
        {1,2,3},
         {3,2,-1}
    };
    int i,j,sum = 0;
    for (i=0; i<N-1; i++)
        for (j=i+1; j<N; j++)
            sum+=abs(a[i][j]);
    printf ("Summa: %d\n",sum);
    return 0;
}
0
Эксперт функциональных языков программированияЭксперт Java
4487 / 2722 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
03.04.2014, 13:13 3
Цитата Сообщение от MicM Посмотреть сообщение
скорее всего есть универсальный алгоритм, но я что-то до него не допер.
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
typedef int value;
 
int
idx(int i, int j, int n)
{
    return i * n + j;
}
 
int
islocmin(value *matrix, int i, int j, int m, int n)
{
    value x;
    
    x = matrix[idx(i, j, n)];
    if (i > 0 && x >= matrix[idx(i-1, j, n)])
        return 0;
    if (j > 0 && x >= matrix[idx(i, j-1, n)])
        return 0;
    if (i < m - 1 && x >= matrix[idx(i+1, j, n)])
        return 0;
    if (i < n - 1 && x >= matrix[idx(i, j+1, n)])
        return 0;
    return 1;
}
 
#define N 10
 
int
main(void)
{
    int i, j, locmins;
    value matrix[N][N];
    time_t t;
 
    srand((unsigned) time(&t));
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            matrix[i][j] = rand() % 50;
            printf("%2d  ", matrix[i][j]);
        }
        printf("\n");
    }
 
    locmins = 0;
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
            if (islocmin((value *)matrix, i, j, N, N)) {
                locmins++;
                printf("[%d][%d] = %d\n", i, j, matrix[i][j]);
            }
    printf("total local minimums: %d\n", locmins);
 
    return 0;
}
Bash
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
% cc test.c
16   6  19  37  29  32  31  49  39  10  
 7  30  36  41  20  42  14  42  44  19  
11  40  32  18  15  45  35  20  33  22  
26   3  40  18  33  25  25  23   8  41  
36  41  15  41  29  46  10  13  23   6  
11  43  21  46  40  20  32  39  11   9  
38  15  30   1  10  44  41  16  35  34  
32   8  45  45  45  45   5  16   9  18  
41  17  10  21  10  49  39  39  15   0  
20  36   5  25  43  25  17   8  15  14  
[0][1] = 6
[1][0] = 7
[1][6] = 14
[2][4] = 15
[2][7] = 20
[3][1] = 3
[3][8] = 8
[4][2] = 15
[4][4] = 29
[4][6] = 10
[4][9] = 6
[5][0] = 11
[5][5] = 20
[6][3] = 1
[7][1] = 8
[7][6] = 5
[7][8] = 9
[8][4] = 10
[8][9] = 0
[9][0] = 20
[9][2] = 5
[9][5] = 25
[9][6] = 17
[9][7] = 8
total local minimums: 24
%
0
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 18
03.04.2014, 21:26  [ТС] 4
можете задачку а) написать более простым кодом для начинающего


еще что означает?
Цитата Сообщение от MicM Посмотреть сообщение
for (i=0; i<N-1; i++)
* * * * for (j=i+1; j<N; j++)
0
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
03.04.2014, 21:38 5
Цитата Сообщение от ЛаураАхметова Посмотреть сообщение
еще что означает?
Проход по части массива, которая находится выше главной диагонали.
Первый цикл идет по строкам, второй - по столбцам.
0
03.04.2014, 21:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2014, 21:38
Помогаю со студенческими работами здесь

Элемент последовательности называется локальным максимумом, если он строго больше предыдущего и последующего э
Элемент последовательности называется локальным максимумом, если он строго больше предыдущего и...

Вычислить количество элементов матрицы, которые больше всех имеющихся у него соседей и сформировать их них одномерный массив.
Здраствуйте, уважаемые. Хочу попросить совета т.к мне в голову ничего не приходит совсем, и в...

Дана матрица А (n*n). Определить такие элементы матрицы, которые строго меньше всех своих соседей, и в разных строках
Дана матрица A(n*n). Определить такие элементы матрицы, которые строго меньше всех своих соседей, в...

Элемент матрицы называется локальным минимумом
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru