Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
6blgJlo'KOgeP
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 21
1

Максимальный локальный минимум матрицы, код на[C]

18.01.2012, 11:26. Просмотров 598. Ответов 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
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
128
129
130
131
132
133
134
135
136
137
138
139
#include <malloc.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
void* allocateMatrixMemory(unsigned int n,unsigned int m,unsigned int typeSize){
    unsigned char** bytes = (unsigned char**)malloc(sizeof(unsigned char*)*n);
    if(!bytes)
        return 0;
    for(unsigned int i = 0; i < n; i++){
        bytes[i] = (unsigned char*)malloc(typeSize*m);
        if(!bytes[i])
            return 0;
    }
    return bytes;
}
 
void freeMatrixMemory(void* matrix,unsigned int n){
    for(unsigned int i = 0; i < n; i++){
        unsigned char* data = ((unsigned char**)matrix)[i];
        free(data);
    }
    free(matrix);
}
 
void fillMatrixWithRandomNumbers(int** matrix,unsigned int n,unsigned int m,int first,int second){
 
    for(unsigned int i = 0; i<n; i++){
        for(unsigned int j = 0; j<m; j++){
            int r = rand()%(second - first) + first;
            matrix[i][j] = r;
        }
    }
}
 
int** getRandomMatrix(unsigned int n,unsigned int m,int start,int end){
    int** matrix = (int**)allocateMatrixMemory(n,m,sizeof(int));
    fillMatrixWithRandomNumbers(matrix,n,m,start,end);
    return matrix;
}
 
int getMaxLocalMatrixMinimum(int** matrix,unsigned int n,unsigned int m){
 
    int max = 0;
    for(unsigned int i = 1; i < n-1; i++){
        for(unsigned int j = 1; j < m-1; j++){
            if(matrix[i][j] <= max)
                continue;
            char check = (matrix[i][j] < matrix[i+1][j-1]) &&
                (matrix[i][j] < matrix[i-1][j-1]) &&
                (matrix[i][j] < matrix[i+1][j+1]) &&
                (matrix[i][j] < matrix[i][j-1]) &&
                (matrix[i][j] < matrix[i-1][j]) &&
                (matrix[i][j] < matrix[i+1][j]) &&
                (matrix[i][j] < matrix[i][j+1]) &&
                (matrix[i][j] < matrix[i-1][j+1]);
            if(check)
                max = matrix[i][j];
        }
    }
 
    if(matrix[0][0] > max){
        char check = matrix[0][0] < matrix[1][1] &&
                matrix[0][0] < matrix[0][1] &&
                matrix[0][0] < matrix[1][0];
        if(check)
            max = matrix[0][0];
    }
 
 
    if(matrix[n-1][m-1] > max){
        char check = matrix[n-1][m-1] < matrix[n-2][m-2] &&
                matrix[n-1][m-1] < matrix[n-1][m-2] &&
                matrix[n-1][m-1] < matrix[n-2][m-1];
        if(check)
            max = matrix[0][0];
    }
 
    if(matrix[0][m-1] > max){
        char check = matrix[0][m-1] < matrix[1][m-2] &&
                matrix[0][m-1] < matrix[0][m-2] &&
                matrix[0][m-1] < matrix[1][m-1];
        if(check)
            max = matrix[0][0];
    }
 
    if(matrix[n-1][0] > max){
        char check = matrix[n-1][0] < matrix[n-2][1] &&
                matrix[n-1][0] < matrix[n-1][1] &&
                matrix[n-1][0] < matrix[n-2][0];
        if(check)
            max = matrix[0][0];
    }
 
    for(unsigned int i = 1; i<m-1; i++){
        if(matrix[0][i] <= max)
            continue;
        char check = matrix[0][i] < matrix[0][i-1] &&
        matrix[0][i] < matrix[1][i-1] &&
        matrix[0][i] < matrix[0][i+1] &&
        matrix[0][i] < matrix[1][i+1] &&
        matrix[0][i] < matrix[1][i];
        if(check)
            max = matrix[0][i];
    }
 
//    for(unsigned int i = 1; i<n-1; i++){
//        if(matrix[0][i] <= max)
//            continue;
//       char check = matrix[i][0] < matrix[i-1][0] &&
//        matrix[i][0] < matrix[i-1][1] &&
//        matrix[i][0] < matrix[i+1][0] &&
//        matrix[i][0] < matrix[i+1][1] &&
//        matrix[i][0] < matrix[i][1];
//        if(check)
//            max = matrix[i][0];
//    }
 
    return max;
}
 
void printMatrix( int** matrix,unsigned n,unsigned int m){
    for(unsigned int i = 0; i<n; i++){
        for(unsigned int j = 0; j<m; j++)
            printf("%d ",matrix[i][j]);
        puts("");
    }
}
 
int main(){
 
    srand(time(0));
    const int n = 5;
    const int m = 5;
    int** matrix = getRandomMatrix(n,m,10,100);
    printMatrix(matrix,n,m);
    freeMatrixMemory(matrix,n);
    printf("\n%d",getMaxLocalMatrixMinimum(matrix,n,m));
    return 0;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2012, 11:26
Ответы с готовыми решениями:

Найти максимальный локальный минимум массива
Дан массив размера N. Найти максимальный из его локальных минимумов. Нужно код на уровне 11...

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

Локальный минимум матрицы
Такс,люди,помогите пожалуйста. мне нужно найти локальный минимум матрицы 10х10. Локальным минимумом...

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

Найти локальный минимум матрицы
Нужно найти позиции всех локальных минимумов в матрице. Можно использовать процедуры и функции....

1
OstapBender
586 / 525 / 75
Регистрация: 22.03.2011
Сообщений: 1,585
18.01.2012, 14:13 2
C
1
2
    for(unsigned int i = 1; i < n-1; i++){
        for(unsigned int j = 1; j < m-1; j++){
ну всё верно, циклы то до n-1, m-1
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2012, 14:13

локальный минимум
Доброго времени суток :) Помогите написать программу в вижуал си ++ Вот собственно задача:...

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

локальный минимум
надо написать на С++...совсем его не понимаю... элемент матрицы называется локальным минимумом...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru