1 / 1 / 1
Регистрация: 21.09.2011
Сообщений: 16
1

Заменить все локальные минимумы данной матрицы на нули

25.11.2011, 00:15. Показов 6456. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Matrix74. Дана матрица размера M × N. Элемент матрицы называется ее ло-кальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на нули. При реше-нии допускается использовать вспомогательную матрицу.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2011, 00:15
Ответы с готовыми решениями:

Заменить все локальные минимумы данной матрицы M × N на нули.
Дана матрица размера M × N.Заменить все локальные минимумы данной матрицы на нули. При реше-нии...

Заменить все локальные минимумы и максимумы данной матрицы на 0
Дана матрица размера M x N. Элемент называется локальным минимумом (максимумом), если он меньше...

Матрицы: все локальные минимумы заменить на 0, матрицу читать с файла
Дана матрица размера M x N. Элемент называется локальным минимумом (максимумом), если она меньше...

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

2
387 / 294 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
25.11.2011, 00:47 2
Лучший ответ Сообщение было отмечено Ra1ko как решение

Решение

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
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "RUS");
    
    cout << "Enter M: ";
    int m;
    cin >> m;
    
    cout << "Enter N: ";
    int n;
    cin >> n;
    
    int **p;
    
    *p = new int[m];
    
    for(int i=0; i<m; i++) p[i] = new int[n];
    
    int temp=1;
    for(int i=0; i<m; i++)                 //Устанавлисваем значения в массив
            for(int j=0; j<n; j++,temp++){
           if(temp==10)
            temp=1;
           p[i][j]=temp;
            }
             
    for(int i=0; i<m; i++){                //Вывод массива на экран
            for(int j=0; j<n; j++)
            cout << p[i][j];
            cout << endl;     
            }
            
    temp=99999999;
    for(int i=0; i<m; i++){                 //Ищем наименьшее значение
            for(int j=0; j<n; j++)
            if(temp>p[i][j])
            temp=p[i][j];
            }
            
    for(int i=0; i<m; i++){                 //Устанавлисваем 0 место минимума
            for(int j=0; j<n; j++)
            if(p[i][j]==temp)
            p[i][j]=0;
            }
            
            cout << endl;
 
    for(int i=0; i<m; i++){                //Вывод массива на экран
            for(int j=0; j<n; j++)
            cout << p[i][j];
            cout << endl;     
            }
            
            
            system("pause");
            return 0;
            }
Миниатюры
Заменить все локальные минимумы данной матрицы на нули  
1
Заблокирован
25.11.2011, 02:14 3
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
const size_t N = 10, M = 11;
 
void mem_error(int **value)
{
    if (!value)
        exit( -1 );
}
 
int **create()
{
    int **arr;
 
    arr = (int**)malloc(N * sizeof(int));
    mem_error(arr);
 
    for (int i = 0; i < N; ++i)
    {
        arr[ i ] = (int*) malloc(M * sizeof (int));
        mem_error(&arr[ i ]);
    }
    return arr;
}
 
_Bool is_local_min(int **arr, int row, int coll)
{
    int min = arr[ row ][ coll ];
    int i_min = ( row ) ? row - 1 : row;
    int i_max = ( row == (N - 1) ) ? row : row + 1;
    int j_min = ( coll ) ? coll - 1 : coll;
    int j_max = ( coll == (M - 1) ) ? coll : coll + 1;
    int j = j_min;
 
    while ( i_min <= i_max )
    {
        j = j_min;
 
        while ( j <= j_max )
        {
            if (arr[ i_min ] [ j ] < min )
                return 0;
            ++j;
        }
        ++i_min;
    }
    return 1;
}
 
int main()
{
    int **matrix;
    srand(time(0));
 
    matrix = create();
    /***печать исходной матрицы***/
    for (int i = 0; i < N; ++i)
    {
        puts("");
        for (int j = 0; j < M; ++j)
        {
            matrix[ i ][ j ] = rand() % (N * M) + 1;
            printf("%4d", matrix[ i ][ j ]);
        }
    }
    /***поиск и замена нулем локального минимума***/
    for (int i = 0; i < N; ++i)
        for (int j = 0; j < M; ++j)
            if ( is_local_min( matrix, i, j ) )
                matrix[ i ][ j ] = 0;
 
    /***печать преобразованной матрицы***/
    puts("");
    for (int i = 0; i < N; ++i)
    {
        puts("");
        for (int j = 0; j < M; ++j)
            printf("%4d", matrix[ i ][ j ]);
    }
    puts("");
 
    for (int i = 0; i < N; ++i)
        free(matrix[ i ]);
    free(matrix);
 
    return 0;
}
Добавлено через 26 минут
даже с учетом того что локальный минимум должен быть строго меньше окружающих его элементов, то функция проверки немного меняется и будет такой
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_Bool is_local_min(int **arr, int row, int coll)
{
    int min = arr[ row ][ coll ];
    int i_min = ( row ) ? row - 1 : row;
    int i_max = ( row == (N - 1) ) ? row : row + 1;
    int j_min = ( coll ) ? coll - 1 : coll;
    int j_max = ( coll == (M - 1) ) ? coll : coll + 1;
    int j = j_min;
 
    while ( i_min <= i_max )
    {
        j = j_min;
 
        while ( j <= j_max )
        {
            if (arr[ i_min ] [ j ] < min && ( (i_min == row) ? (j == coll) ? 0 : 1 : 1))
                return 0;
            ++j;
        }
        ++i_min;
    }
    return 1;
}
1
25.11.2011, 02:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2011, 02:14
Помогаю со студенческими работами здесь

Найти все локальные минимумы массива A[1…20]
Найти все локальные минимумы массива A. Локальные минимумы – это элементы массива, которые меньше...

Возвести в квадрат все локальные минимумы заданного массива
Дан массив размера N. Возвести в квадрат все его локальные минимумы (т. е. числа, меньшие своих...

Найти все локальные минимумы и максимумы в заданном массиве
В университете задали написать программу, уже не первую неделю над ней бьюсь. Тема: одномерные...

Найти локальные минимумы массива
Найти локальные минимумы массива (когда и соседний элемент слева, и соседний элемент справа от...


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

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

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