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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите как включить объектный файл в проект в Visual Studio 2010? http://www.cyberforum.ru/cpp-beginners/thread391297.html
Написал на ассемблере набор процедур, создал объектный файл, теперь хочу чтобы linker в Visual Studio искал и связывал внешние вызовы процедур в коде на с++ с этим объектным файлом. Подскажите пожалуйста как это сделать? Дело в том что ассемблерный код я компилировал x64 компилятором (ml64.exe) а проект в Visual Studio у меня win32. Не было бы проблем если бы компилятор в Visual Studio 2010 под...
C++ SDL, surface, font непонятная ошибка Почему-то при вызове следующих функций программа просто вылетает. Вопрос - почему? Без них утекает ~10-15 мб оперативки ежесекундно. Это понятно почему. Но вылет-то.. SDL_FreeSurface(textsurf); TTF_CloseFont(font); http://www.cyberforum.ru/cpp-beginners/thread391284.html
Не проходит тест по времени C++
Задача #include <fstream> using namespace std; int main() { ifstream cin("INPUT.TXT"); ofstream cout("OUTPUT.TXT"); int n,m;
Как передать двухмерный массив в функцию? C++
Подскажите пожалуйста, как в функцию передать двухмерный массив? Пробовал так: void FuncArr(int** arr){ arr = 111111; } void main(void){ int arr; FuncArr(arr); cout << arr << endl; }
C++ Работа с ncurses http://www.cyberforum.ru/cpp-beginners/thread391247.html
Доброго времени суток всем!!!! надо написать оболочку с использованием ncurses. застряла при выводе списка файлов в окно. Помогите, пожалуйста!!! Добавлено через 6 минут думала вывести: название файла, размер, время последнего обращения; и все это записать в тип vector, только не знаю как
C++ Работа с файлами Здраствуйте! Выполнить форматирование текстового файла, разместив все его сроки симметрично от средней вертикальной линии. Положение линии определить по середине самой длинной строки файла. подробнее

Показать сообщение отдельно
alkagolik
Заблокирован
25.11.2011, 02:14     Заменить все локальные минимумы данной матрицы на нули
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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru