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

Сравнение двумерных матриц - разобрать код - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить загруженность ядер процессора http://www.cyberforum.ru/cpp-beginners/thread1244562.html
Помогите определить загруженность ядер процессора (может как-нибудь получить эти данные из системы).
C++ Стабильный код и xor Доброго времени! Есть такой код:double azim = degrees( atan( s/c )); Проблема в том что c может быть нулём, поэтому вышележащий код быстро превратился в: const double eps = 1e-10; double azim; if( fabs(c) < eps ) { if(( s < 0.0 )^^( c < 0.0 )) http://www.cyberforum.ru/cpp-beginners/thread1244551.html
C++ Нужен справочник по заголовкам и их функциям
Всем привет. Недавно решил научиться программировать на с++ , ранее писал небольшие плагины для игр на pawn. Вроде бы разобрался с синтаксисом и основными моментами, но как написать реальную программу(например, лаунчер) без понятия. У заголовков, как и у функций, названия такие, будто по клаве ударили. Описание на мсдн такое, что поймет только Страуструп. Есть ли какой-то справочник по заголовкам...
C++ Путаница с sftream и операторами << и >>
Значит так, иду спокойно по книжке по темам "Открытие и закрытие текстовых файлов", а также "Чтение и запись текстовых файлов" и тут я немного запутался. Для того чтобы считать информацию из файла, мы используем ifstream, но я ведь привык, что оператор >> используется для ввода информации. То же самое и с помещением информации через объект класса ostream, и опять же я привык, что <<...
C++ Работа с классами и пересечение их между собой (задача о городах и поездах) http://www.cyberforum.ru/cpp-beginners/thread1244503.html
Здравствуйте. Тут попалась в руки задачка, вкратце суть: Есть города, в каждом городе есть станция, на станции пассажиры, у пасажира есть цель поездки(N - ый город). Между городами ездят поезда, в поезде N вагонов, в вагоне N мест. Написать грубо говоря всю эту систему (без графики), поезд прибыл-погрузился-отбыл, ну и естественно не телепортировался, а где-то там медленно двигается по...
C++ Чем отличаются по функционалу Kbhit() и _kbhit() Всем привет. Утолите нубское любопытство. Везде (на msdn, как минимум) пишут пользовать _kbhit() и что при этом происходит. Все просто и понятно. Про kbhit() пишут только, что устарел еще во времена vs2005. И все. А функционально чем они отличаются? подробнее

Показать сообщение отдельно
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,786
Записей в блоге: 17
19.08.2014, 21:11     Сравнение двумерных матриц - разобрать код
Поправил форматирование, чтобы не "вырви глаз" было:

Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//=========================  1  =========================
int** create_matrix(int n, int m, int tip)
{
    int**variable= NULL; //переменная
    variable = (int**)malloc(sizeof(int*)*n);
    
    for (int i=0; i<n; i++)
        variable[i]=(int*)malloc(sizeof(int)*m);
    printf("Matrix_successfully_created\n",n,m);//матрицу успешно созданно
    rand_value(variable,n,m); //рандомное значение
    
    return variable;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//=========================  2  =========================
void free_memory(int*** matrix, int n)
{
    if ((*matrix==NULL) || (matrix == NULL))
        printf("memory_deleted");
        
    else
    {
        for (int i=0; i<n; i++)
            free(matrix[i]);
        
        free(*matrix);
        *matrix=NULL;
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
//=========================  3  =========================
int** rand_value(int** matrix, int n, int m)
{
    srand(time(NULL));
    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++)
            matrix[i][j]=rand()%20;
    check (matrix,n,m);
    
    return matrix;
}
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
//=========================  4  =========================
int* find_max_min(int** matrix,int n,int m)
{
    if((matrix==NULL)||(n==0)||(m==0))
    {
        printf("First_create_a_matrix");// сначала создайте матрицу
        return NULL;
    }
    else
    {
        int max=matrix[0][0];
        int max_k_n=0, max_k_m=0;
        int min=matrix[0][0];
        int min_k_n=0, min_k_m=0;
        for (int i=0; i<n; i++)
        {
            for (int j=0; j<m; j++)
            {
                if (matrix[i][j] > max)
                {
                        max = matrix[i][j];
                        max_k_n=i;
                        max_k_m=j;
                }
                if (matrix[i][j] < min)
                {
                    min = matrix[i][j];
                    min_k_n=i;
                    min_k_m=j;
                }
            }
        }
        
        int *return_matrix = (int*)malloc(sizeof(int)*4);
        return_matrix[0]=max_k_n;
        return_matrix[1]=max_k_m;
        return_matrix[2]=min_k_n;
        return_matrix[3]=min_k_m;
        
        return return_matrix;
    }
}
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
//=========================  5  =========================
void find_value(int** matrix, int n, int m, int value)
{
    if ((matrix==NULL)||(n==0)||(m==0))
        printf("First_create_a_matrix");
    else
    {
        int find=0;
        int index=0;
        int** variable;
        for (int i=0; i<n; i++)
            for (int j=0; j<m; j++)
                if (matrix[i][j] == value)
                    find++;
        variable = (int**)malloc(sizeof(int*)*find);
        
        for (int i=0; i<find; i++)
            variable[i] = (int*)malloc(sizeof(int)*2);
            
        for (int i=0; i<n; i++)
            for (int j=0; j<m; j++)
                if (matrix[i][j] == value)
                {
                    variable[index][0] = i;
                    variable[index][1] = j;
                    index++;
                }
                
        for (int i=0; i<find; i++)
            printf("n=%d,m=%d\n",variable[i][0],variable[i][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
//=========================  6  =========================
int** compare(int** matrix,int** matrix2,int n,int m)
{
    if ((matrix==NULL)||(n==0)||(m==0))
    {
        printf("First_create_a_matrix");
        return NULL;
    }
    
    else
    {
        int** matrix3 = create_matrix(n,m,1);
        printf("First_matrix:\n");//первая
        check(matrix,n,m);
        printf("second:\n");//вторая
        check(matrix2,n,m);
        for (int i=0; i<n; i++)
            for (int j=0; j<m; j++)
            {
                if (matrix[i][j] > matrix2[i][j])
                    matrix3[i][j] = matrix[i][j];
                else
                    matrix3[i][j] = matrix3[i][j];
            }
        printf("The_compare_is_successful\n"); //Сравнение прошло успешно.
        
        return matrix3;
    }
}


Добавлено через 3 минуты
Ксения love, Вам прям построчно прокомментировать что там происходит в функциях или и так сойдёт?
  • create_matrix - создаются двумерные массивы (ещё их называют матрицы)
  • rand_value - матрицы наполняются случайными значениями
  • find_value - выполняется поиск значений
  • find_max_min - ищётся максимальное и минимальное значение
  • compare - сравниваются матрицы
 
Текущее время: 08:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru